Refactored library. Added new validation and excpetions. Added JSON input support
This commit is contained in:
@@ -24,82 +24,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
define("PLACEHOLDER_REGEX", "/\{([\w\.]+)\}/");
|
||||
class UrlUtils {
|
||||
|
||||
public static function prepareRequest(&$url, &$parameters, $addRegularQueryStringParameters = false) {
|
||||
if ($parameters == null) {
|
||||
$parameters = array();
|
||||
public static function buildUrlWithQueryString($url, $parameters) {
|
||||
foreach ($parameters as $paramKey => $paramValue) {
|
||||
$delimiter = (strpos($url, "?") === false) ? "?" : "&";
|
||||
$url .= $delimiter . $paramKey . "=" . urlencode($paramValue);
|
||||
}
|
||||
// Remove null parameters
|
||||
$keys = array_keys($parameters);
|
||||
for ($i = 0;$i<count($keys);$i++) {
|
||||
$key = $keys[$i];
|
||||
if ($parameters[$key] === null) {
|
||||
unset($parameters[$key]);
|
||||
} else {
|
||||
$parameters[$key] = (string)$parameters[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$finalUrl = $url;
|
||||
$matches = null;
|
||||
$match = preg_match_all(PLACEHOLDER_REGEX, $url, $matches);
|
||||
|
||||
if (!empty($matches) && count($matches) > 1) {
|
||||
$bracketedMatches = $matches[0];
|
||||
$plainMatches = $matches[1];
|
||||
foreach ($plainMatches as $index => $key) {
|
||||
if (array_key_exists($key, $parameters)) {
|
||||
$finalUrl = str_replace($bracketedMatches[$index], rawurlencode($parameters[$key]), $finalUrl);
|
||||
unset($parameters[$key]);
|
||||
} else {
|
||||
$finalUrl = preg_replace("/&?[\w]*=?\{" . $key . "\}/", "", $finalUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$finalUrl = str_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) ? "?" : "&";
|
||||
$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) {
|
||||
list($paramKey, $paramValue) = $queryStringParameterParts;
|
||||
if (!self::isPlaceHolder($paramValue)) {
|
||||
$parameters[$paramKey] = $paramValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function isPlaceHolder($value) {
|
||||
return preg_match(PLACEHOLDER_REGEX, $value);
|
||||
}
|
||||
|
||||
public static function generateClientHeaders() {
|
||||
$headers = "User-Agent: mashape-php/1.0: ";
|
||||
return $headers;
|
||||
return $url;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user