public static function get_compact_response_links($response)
{
$links = self::get_response_links($response);
if (empty($links)) {
return array();
}
$curies = $response->get_curies();
$used_curies = array();
foreach ($links as $rel => $items) {
// Convert $rel URIs to their compact versions if they exist.
foreach ($curies as $curie) {
$href_prefix = substr($curie['href'], 0, strpos($curie['href'], '{rel}'));
if (strpos($rel, $href_prefix) !== 0) {
continue;
}
// Relation now changes from '$uri' to '$curie:$relation'.
$rel_regex = str_replace('\\{rel\\}', '(.+)', preg_quote($curie['href'], '!'));
preg_match('!' . $rel_regex . '!', $rel, $matches);
if ($matches) {
$new_rel = $curie['name'] . ':' . $matches[1];
$used_curies[$curie['name']] = $curie;
$links[$new_rel] = $items;
unset($links[$rel]);
break;
}
}
}
// Push the curies onto the start of the links array.
if ($used_curies) {
$links['curies'] = array_values($used_curies);
}
return $links;
}