. * * * The author of this software is Mashape, Inc. * For any question or feedback please contact us at: support@mashape.com * */ define("PLACEHOLDER_REGEX", "/\{([\w\.]+)\}/"); class UrlUtils { public static function prepareRequest(&$url, &$parameters, $addRegularQueryStringParameters = false) { if ($parameters == null) { $parameters = array(); } // Remove null parameters $keys = array_keys($parameters); for ($i = 0;$i 1) { $matches = $matches[1]; $count = count($matches); foreach ($matches as $key) { if (array_key_exists($key, $parameters)) { $finalUrl = preg_replace("/(\?.+)\{" . $key . "\}/", '${1}' . urlencode($parameters[$key]), $finalUrl); $finalUrl = preg_replace("/\{" . $key . "\}/", rawurlencode($parameters[$key]), $finalUrl); } else { $finalUrl = preg_replace("/&?[\w]*=?\{" . $key . "\}/", "", $finalUrl); } } } $finalUrl = preg_replace("/\?&/", "?", $finalUrl); $finalUrl = preg_replace("/\?$/", "", $finalUrl); if ($addRegularQueryStringParameters) { // Get regular query string parameters self::addRegularQueryStringParameters($finalUrl, $parameters); } else { foreach ($parameters as $paramKey => $paramValue) { $delimiter = (strpos($finalUrl, "?") === false) ? "?" : "&"; if (strpos($finalUrl, $paramKey."=") === false) { $finalUrl .= $delimiter . $paramKey . "=" . urlencode($paramValue); } } } $url = $finalUrl; } private static function addRegularQueryStringParameters($url, &$parameters) { $urlParts = explode("?", $url); if (count($urlParts) > 1) { $queryString = $urlParts[1]; $queryStringParameters = explode("&", $queryString); foreach ($queryStringParameters as $queryStringParameter) { $queryStringParameterParts = explode("=", $queryStringParameter); if (count($queryStringParameterParts) > 1) { if (!self::isPlaceHolder($queryStringParameterParts[1])) { $parameters[$queryStringParameterParts[0]] = $queryStringParameterParts[1]; } } } } } private static function isPlaceHolder($value) { return preg_match(PLACEHOLDER_REGEX, $value); } public static function generateClientHeaders() { $headers = "User-Agent: mashape-php/1.0: "; return $headers; } } ?>