J. King
8 years ago
3 changed files with 64 additions and 8 deletions
@ -0,0 +1,33 @@ |
|||||
|
<?php |
||||
|
declare(strict_types=1); |
||||
|
namespace JKingWeb\NewsSync\REST; |
||||
|
|
||||
|
abstract class AbstractHandler implements Handler { |
||||
|
abstract function __construct(\JKingWeb\NewsSync\RuntimeData $data); |
||||
|
abstract function dispatch(Request $req): Response; |
||||
|
|
||||
|
protected function parseURL(string $url): array { |
||||
|
// split the query string from the path |
||||
|
$parts = explode("?", $url); |
||||
|
$out = ['path' => $parts[0], 'query' => []]; |
||||
|
// if there is a query string, parse it |
||||
|
if(isset($parts[1])) { |
||||
|
// split along & to get key-value pairs |
||||
|
$query = explode("&", $parts[1]); |
||||
|
for($a = 0; $a < sizeof($query); $a++) { |
||||
|
// split each pair, into no more than two parts |
||||
|
$data = explode("=", $query[$a], 2); |
||||
|
// decode the key |
||||
|
$key = rawurldecode($data[0]); |
||||
|
// decode the value if there is one |
||||
|
$value = ""; |
||||
|
if(isset($data[1])) { |
||||
|
$value = rawurldecode($data[1]); |
||||
|
} |
||||
|
// add the pair to the query output, overwriting earlier values for the same key, is present |
||||
|
$out['query'][$key] = $value; |
||||
|
} |
||||
|
} |
||||
|
return $out; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue