add binary protobuf GTFSRT format
[busui.git] / rtpis / gtfs-realtime.php
blob:a/rtpis/gtfs-realtime.php -> blob:b/rtpis/gtfs-realtime.php
--- a/rtpis/gtfs-realtime.php
+++ b/rtpis/gtfs-realtime.php
@@ -15,7 +15,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
  */
-include ('include/common.inc.php');
+include ('../include/common.inc.php');
 function accept_header($header = false) {
     // http://jrgns.net/parse_http_accept_header
     $toret = null;
@@ -36,9 +36,23 @@
     }
     return $toret;
 }
+function usage() {
+echo "Usage notes: Must specify format json/protobuf and gtfs-realtime feedtype alerts/updates. If callback is specified, will provide jsonp. Can filter with parmaters filter_class route/stop and filter_id with the id specified in GTFS.";
+die();
+}
+
+$filter_class = (isset($_REQUEST['filter_class']) ? $_REQUEST['filter_class'] : "");
+$filter_id = (isset($_REQUEST['filter_id']) ? $_REQUEST['filter_id']:"");
+
 $json_types =  Array("application/json","application/x-javascript","text/javascript","text/x-javascript","text/x-json");
 if ($_REQUEST['json']) {
-    $return = getServiceAlertsAsJSON($_REQUEST['filter_class'], $_REQUEST['filter_id']);
+if ($_REQUEST['alerts']) {
+    $return = getServiceAlertsAsJSON($filter_class,$filter_id);
+} else if ($_REQUEST['updates']) {
+    $return = getTripUpdatesAsJSON($filter_class,$filter_id);
+} else {
+	usage();
+}
     header('Content-Type: application/json; charset=utf8');
 // header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/');
     header('Access-Control-Max-Age: 3628800');
@@ -47,7 +61,25 @@
         $json = '(' . $return . ');'; //must wrap in parens and end with semicolon
         //print_r($_GET['callback'] . $json); //callback is prepended for json-p
     }
-    else
+    else {
         echo $return;
+	}
+} else if ($_REQUEST['protobuf']) {
+if ($_REQUEST['alerts']) {
+    $return = getServiceAlertsAsBinary($filter_class,$filter_id);
+} else if ($_REQUEST['updates']) {
+    $return = getTripUpdatesAsBinary($filter_class,$filter_id);
+} else {
+	usage();
+}
+    header('Content-Type: application/x-protobuf');
+header('Content-Disposition: attachment; filename="'.(isset($_REQUEST['updates'])?"updates.":"alerts.").date("c").'.protobuf"');
+// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/');
+    header('Access-Control-Max-Age: 3628800');
+    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
+        echo $return;
+} else {
+usage();
 }
 ?>
+