public static function generateSecuredApiKey($privateApiKey, $query, $userToken = null)
{
$urlEncodedQuery = '';
if (is_array($query)) {
$queryParameters = array();
if (array_keys($query) !== array_keys(array_keys($query))) {
// array of query parameters
$queryParameters = $query;
} else {
// array of tags
$tmp = array();
foreach ($query as $tag) {
if (is_array($tag)) {
array_push($tmp, '(' . implode(',', $tag) . ')');
} else {
array_push($tmp, $tag);
}
}
$tagFilters = implode(',', $tmp);
$queryParameters['tagFilters'] = $tagFilters;
}
if ($userToken != null && strlen($userToken) > 0) {
$queryParameters['userToken'] = $userToken;
}
$urlEncodedQuery = static::buildQuery($queryParameters);
} else {
if (strpos($query, '=') === false) {
// String of tags
$queryParameters = array('tagFilters' => $query);
if ($userToken != null && strlen($userToken) > 0) {
$queryParameters['userToken'] = $userToken;
}
$urlEncodedQuery = static::buildQuery($queryParameters);
} else {
// url encoded query
$urlEncodedQuery = $query;
if ($userToken != null && strlen($userToken) > 0) {
$urlEncodedQuery = $urlEncodedQuery . '&userToken=' . urlencode($userToken);
}
}
}
$content = hash_hmac('sha256', $urlEncodedQuery, $privateApiKey) . $urlEncodedQuery;
return base64_encode($content);
}