From 7698583a2b774b68ef1a24f87023c8385d671f9f Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Thu, 13 Jun 2019 18:55:17 +0000
Subject: [PATCH] Factor out common section out of proxy_bus.php and proxy_tram.php
---
proxy_tram.php | 116 ---------------------------------------------------------
1 files changed, 1 insertions(+), 115 deletions(-)
diff --git a/proxy_tram.php b/proxy_tram.php
index a475e3c..7f3d8a0 100644
--- a/proxy_tram.php
+++ b/proxy_tram.php
@@ -1,117 +1,3 @@
<?php
-function is_number($str) {
- $str = (string)$str;
-
- return
- ctype_digit($str)
- OR
- (
- substr($str, 0, 1) == '-'
- AND
- ctype_digit(substr($str, 1))
- );
-}
-
$base_proxy = 'http://www.ttss.krakow.pl/internetservice';
-$method = [
- '/services/lookup/autocomplete/json' => [
- 'query' => function() { return TRUE; },
- ],
- '/services/passageInfo/stopPassages/stop' => [
- 'stop' => 'ctype_alnum',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'startTime' => 'ctype_digit',
- #'timeFrame' => 'ctype_digit',
- ],
- '/services/passageInfo/stopPassages/stopPoint' => [
- 'stopPoint' => 'is_number',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'startTime' => 'ctype_digit',
- #'timeFrame' => 'ctype_digit',
- ],
- '/services/tripInfo/tripPassages' => [
- 'tripId' => 'ctype_digit',
- 'mode' => function($mode) { return in_array($mode, ['arrival', 'departure']); },
- #'vehicleId' => 'ctype_digit',
- ],
- '/services/routeInfo/routeStops' => [
- 'routeId' => 'ctype_alnum',
- ],
- '/services/stopInfo/stop' => [
- 'stop' => 'is_number',
- ],
- '/services/stopInfo/stopPoint' => [
- 'stopPoint' => 'is_number',
- ],
-
- '/geoserviceDispatcher/services/stopinfo/stops' => [
- 'left' => 'is_number',
- 'bottom' => 'is_number',
- 'right' => 'is_number',
- 'top' => 'is_number',
- ],
- '/geoserviceDispatcher/services/stopinfo/stopPoints' => [
- 'left' => 'is_number',
- 'bottom' => 'is_number',
- 'right' => 'is_number',
- 'top' => 'is_number',
- ],
- '/geoserviceDispatcher/services/pathinfo/route' => [
- 'id' => 'is_number',
- 'direction' => 'is_number',
- ],
- '/geoserviceDispatcher/services/pathinfo/vehicle' => [
- 'id' => 'is_number',
- ],
- '/geoserviceDispatcher/services/vehicleinfo/vehicles' => [
- 'lastUpdate' => 'ctype_digit',
- 'positionType' => function($type) { return in_array($type, ['CORRECTED', 'RAW']); },
- 'colorType' => function($type) { return in_array($type, ['ROUTE_BASED']); },
- ],
-];
-$rewrite = [
- '/lookup/autocomplete/json' => '/services/lookup/autocomplete/json',
- '/passageInfo/stopPassages/stop' => '/services/passageInfo/stopPassages/stop',
- '/routeInfo/routeStops' => '/services/routeInfo/routeStops',
- '/internetservice/geoserviceDispatcher/services/pathinfo/vehicle' => '/geoserviceDispatcher/services/pathinfo/vehicle',
-];
-
-$path = $_SERVER['PATH_INFO'];
-
-if(isset($rewrite[$path])) {
- $path = $rewrite[$path];
-}
-
-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;
+require('proxy_common.php');
--
Gitblit v1.9.1