The clean & modern RSS server that doesn't give you any crap.
https://thearsse.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.0 KiB
33 lines
1.0 KiB
7 years ago
|
<?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;
|
||
|
}
|
||
|
}
|