Improved www.ttss.krakow.pl
Jacek Kowalski
2016-12-26 42f09a6eda199f3a0c29cb82ea00b850f24ad94a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
$base_proxy = 'http://www.ttss.krakow.pl/internetservice/services';
$method = [
    '/lookup/autocomplete/json' => [
        'query' => function() { return TRUE; },
    ],
    '/passageInfo/stopPassages/stop' => [
        'stop' => 'ctype_alnum',
        'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
    ],
    '/routeInfo/routeStops' => [
        'routeId' => 'ctype_alnum'
    ],
];
 
$path = $_SERVER['PATH_INFO'];
 
if(!isset($method[$path])) {
    header('HTTP/1.1 403 Forbidden');
    die('Forbidden');
}
 
$parameters = [];
 
foreach($method[$path] as $name => $filter) {
    if(!isset($_GET[$name])) {
        header('HTTP/1.1 403 Forbidden');
        die('Parameter '.$name.' is required');
    }
    
    if(!$filter($_GET[$name])) {
        header('HTTP/1.1 403 Forbidden');
        die('Parameter '.$name.' has invalid value');
    }
    
    $parameters[$name] = $_GET[$name];
}
 
$result = @file_get_contents($base_proxy . $path . '?' . http_build_query($parameters));
if(!$result OR $http_response_header[0] != 'HTTP/1.1 200 OK') {
    header('HTTP/1.1 503 Service Unavailable');
    if(isset($http_response_header[0])) {
        die($http_response_header[0]);
    } else {
        die('Unknown error');
    }
}
 
header('Content-Type: application/json');
echo $result;