/**
* Copyright (C) 2013 Kurt Raschke
* Copyright (C) 2011 Google, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onebusaway.transit_data_federation_webapp.controllers.gtfs_realtime;
import java.io.IOException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.onebusaway.transit_data_federation.impl.realtime.gtfs_realtime.GtfsRealtimeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.google.transit.realtime.GtfsRealtime.FeedMessage;
@Controller
public class GtfsRealtimeController {
private GtfsRealtimeService _gtfsRealtimeService;
@Autowired
public void setGtfsRealtimeService(GtfsRealtimeService gtfsRealtimeService) {
_gtfsRealtimeService = gtfsRealtimeService;
}
@RequestMapping(value = "/gtfs-realtime/trip-updates.action")
public void tripUpdates(ServletRequest request, HttpServletResponse response) throws IOException {
FeedMessage tripUpdates = _gtfsRealtimeService.getTripUpdates();
render(request, response, tripUpdates);
}
@RequestMapping(value = "/gtfs-realtime/vehicle-positions.action")
public void vehiclePositions(ServletRequest request, HttpServletResponse response) throws IOException {
FeedMessage vehiclePositions = _gtfsRealtimeService.getVehiclePositions();
render(request, response, vehiclePositions);
}
@RequestMapping(value = "/gtfs-realtime/alerts.action")
public void alerts(ServletRequest request, HttpServletResponse response) throws IOException {
FeedMessage alerts = _gtfsRealtimeService.getAlerts();
render(request, response, alerts);
}
private void render(ServletRequest request, HttpServletResponse response,
FeedMessage message) throws IOException {
if (request.getParameter("debug") != null) {
response.setContentType("text/plain");
response.getWriter().write(message.toString());
} else {
response.setContentType("application/x-google-protobuf");
message.writeTo(response.getOutputStream());
}
}
}