Example #1
0
    def setup(self):
        self.api.app.url_map.converters['region'] = RegionConverter
        self.api.app.url_map.converters['lon'] = LonConverter
        self.api.app.url_map.converters['lat'] = LatConverter
        self.api.app.url_map.converters['uri'] = UriConverter
        self.api.app.url_map.converters['id'] = IdConverter
        self.api.app.url_map.strict_slashes = False

        self.module_resources_manager.register_resource(Index.Index())
        self.add_resource(Index.Index, '/', '', endpoint='index')
        self.module_resources_manager.register_resource(
            Index.TechnicalStatus())
        self.add_resource(Index.TechnicalStatus,
                          '/status',
                          endpoint='technical_status')
        lon_lat = '<lon:lon>;<lat:lat>/'
        coverage = '/coverage/'
        region = coverage + '<region:region>/'
        coord = coverage + lon_lat

        self.add_resource(Coverage.Coverage,
                          coverage,
                          region,
                          coord,
                          endpoint='coverage')

        self.add_resource(
            Coord.Coord,
            '/coord/' + lon_lat,
            '/coords/' + lon_lat,
            region + 'coord/' + lon_lat + 'addresses',
            region + 'coords/' + lon_lat + 'addresses',
            endpoint='coord',
        )

        collecs = list(
            converters_collection_type.collections_to_resource_type.keys())
        for collection in collecs:
            # we want to hide the connections apis, as they are only for debug
            hide = collection == 'connections'
            self.add_resource(
                getattr(Uri, collection)(True),
                region + collection,
                coord + collection,
                region + '<uri:uri>/' + collection,
                coord + '<uri:uri>/' + collection,
                endpoint=collection + '.collection',
                hide=hide,
            )

            if collection == 'connections':
                # connections api cannot be query by id
                continue
            self.add_resource(
                getattr(Uri, collection)(False),
                region + collection + '/<id:id>',
                coord + collection + '/<id:id>',
                region + '<uri:uri>/' + collection + '/<id:id>',
                coord + '<uri:uri>/' + collection + '/<id:id>',
                endpoint=collection + '.id',
                hide=hide,
            )

        collecs = [
            "routes", "lines", "line_groups", "networks", "stop_areas",
            "stop_points", "vehicle_journeys"
        ]
        for collection in collecs:
            self.add_resource(getattr(Uri, collection)(True),
                              '/' + collection,
                              endpoint=collection + '.external_codes')

        self.add_resource(Places.Places,
                          region + 'places',
                          coord + 'places',
                          '/places',
                          endpoint='places')
        self.add_resource(Ptobjects.Ptobjects,
                          region + 'pt_objects',
                          coord + 'pt_objects',
                          endpoint='pt_objects')

        self.add_resource(
            Places.PlaceUri,
            '/places/<id:id>',
            region + 'places/<id:id>',
            coord + 'places/<id:id>',
            endpoint='place_uri',
        )

        self.add_resource(
            Places.PlacesNearby,
            region + 'places_nearby',
            coord + 'places_nearby',
            region + '<uri:uri>/places_nearby',
            coord + '<uri:uri>/places_nearby',
            '/coord/' + lon_lat + 'places_nearby',
            '/coords/' + lon_lat + 'places_nearby',
            endpoint='places_nearby',
        )

        self.add_resource(
            Journeys.Journeys,
            region + '<uri:uri>/journeys',
            coord + '<uri:uri>/journeys',
            region + 'journeys',
            coord + 'journeys',
            '/journeys',
            endpoint='journeys',
            # we don't want to document those routes as we consider them deprecated
            hide_routes=(region + '<uri:uri>/journeys',
                         coord + '<uri:uri>/journeys'),
        )

        if app.config['GRAPHICAL_ISOCHRONE']:
            self.add_resource(
                GraphicalIsochrone.GraphicalIsochrone,
                region + 'isochrones',
                coord + 'isochrones',
                endpoint='isochrones',
            )

        if app.config.get('HEAT_MAP'):
            self.add_resource(HeatMap.HeatMap,
                              region + 'heat_maps',
                              coord + 'heat_maps',
                              endpoint='heat_maps')

        self.add_resource(
            Schedules.RouteSchedules,
            region + '<uri:uri>/route_schedules',
            coord + '<uri:uri>/route_schedules',
            '/route_schedules',
            endpoint='route_schedules',
        )

        self.add_resource(
            Schedules.NextArrivals,
            region + '<uri:uri>/arrivals',
            coord + '<uri:uri>/arrivals',
            region + 'arrivals',
            coord + 'arrivals',
            endpoint='arrivals',
        )

        self.add_resource(
            Schedules.NextDepartures,
            region + '<uri:uri>/departures',
            coord + '<uri:uri>/departures',
            region + 'departures',
            coord + 'departures',
            endpoint='departures',
        )

        self.add_resource(
            Schedules.StopSchedules,
            region + '<uri:uri>/stop_schedules',
            coord + '<uri:uri>/stop_schedules',
            '/stop_schedules',
            endpoint='stop_schedules',
        )

        self.add_resource(
            Disruptions.TrafficReport,
            region + 'traffic_reports',
            coord + 'traffic_reports',
            region + '<uri:uri>/traffic_reports',
            coord + '<uri:uri>/traffic_reports',
            endpoint='traffic_reports',
        )

        self.add_resource(
            LineReports.LineReports,
            region + 'line_reports',
            coord + 'line_reports',
            region + '<uri:uri>/line_reports',
            coord + '<uri:uri>/line_reports',
            endpoint='line_reports',
        )

        self.add_resource(
            EquipmentReports.EquipmentReports,
            region + 'equipment_reports',
            coord + 'equipment_reports',
            region + '<uri:uri>/equipment_reports',
            coord + '<uri:uri>/equipment_reports',
            '/coord/' + lon_lat + 'equipment_reports',
            '/coords/' + lon_lat + 'equipment_reports',
            endpoint='equipment_reports',
        )

        self.add_resource(Status.Status,
                          region + 'status',
                          coord + 'status',
                          endpoint='status')
        self.add_resource(GeoStatus.GeoStatus,
                          region + '_geo_status',
                          coord + '_geo_status',
                          endpoint='geo_status')

        self.add_resource(
            Calendars.Calendars,
            region + 'calendars',
            coord + 'calendars',
            region + '<uri:uri>/calendars',
            coord + '<uri:uri>/calendars',
            region + "calendars/<id:id>",
            coord + "calendars/<id:id>",
            endpoint="calendars",
        )

        self.add_resource(
            Schedules.TerminusSchedules,
            region + '<uri:uri>/terminus_schedules',
            coord + '<uri:uri>/terminus_schedules',
            '/terminus_schedules',
            endpoint='terminus_schedules',
        )

        self.add_resource(JSONSchema.Schema, '/schema', endpoint="schema")
Example #2
0
    def setup(self):
        self.api.app.url_map.converters['region'] = RegionConverter
        self.api.app.url_map.converters['lon'] = LonConverter
        self.api.app.url_map.converters['lat'] = LatConverter
        self.api.app.url_map.converters['uri'] = UriConverter
        self.api.app.url_map.converters['id'] = IdConverter
        self.api.app.url_map.strict_slashes = False

        self.module_resources_manager.register_resource(Index.Index())
        self.add_resource(Index.Index, '/', '', endpoint='index')
        self.module_resources_manager.register_resource(
            Index.TechnicalStatus())
        self.add_resource(Index.TechnicalStatus,
                          '/status',
                          endpoint='technical_status')
        lon_lat = '<lon:lon>;<lat:lat>/'
        coverage = '/coverage/'
        region = coverage + '<region:region>/'
        coord = coverage + lon_lat

        self.add_resource(Coverage.Coverage,
                          coverage,
                          region,
                          coord,
                          endpoint='coverage')

        self.add_resource(Coord.Coord,
                          '/coord/' + lon_lat,
                          '/coords/' + lon_lat,
                          endpoint='coord')

        collecs = converters_collection_type.collections_to_resource_type.keys(
        )
        for collection in collecs:
            self.add_resource(getattr(Uri, collection)(True),
                              region + collection,
                              coord + collection,
                              region + '<uri:uri>/' + collection,
                              coord + '<uri:uri>/' + collection,
                              endpoint=collection + '.collection')

            self.add_resource(getattr(Uri, collection)(False),
                              region + collection + '/<id:id>',
                              coord + collection + '/<id:id>',
                              region + '<uri:uri>/' + collection + '/<id:id>',
                              coord + '<uri:uri>/' + collection + '/<id:id>',
                              endpoint=collection + '.id')

        collecs = [
            "routes", "lines", "line_groups", "networks", "stop_areas",
            "stop_points", "vehicle_journeys"
        ]
        for collection in collecs:
            self.add_resource(getattr(Uri, collection)(True),
                              '/' + collection,
                              endpoint=collection + '.external_codes')

        self.add_resource(Places.Places,
                          region + 'places',
                          coord + 'places',
                          '/places',
                          endpoint='places')
        self.add_resource(Ptobjects.Ptobjects,
                          region + 'pt_objects',
                          coord + 'pt_objects',
                          endpoint='pt_objects')

        self.add_resource(Places.PlaceUri,
                          '/places/<id:id>',
                          region + 'places/<id:id>',
                          coord + 'places/<id:id>',
                          endpoint='place_uri')

        self.add_resource(Places.PlacesNearby,
                          region + 'places_nearby',
                          coord + 'places_nearby',
                          region + '<uri:uri>/places_nearby',
                          coord + '<uri:uri>/places_nearby',
                          '/coord/' + lon_lat + 'places_nearby',
                          '/coords/' + lon_lat + 'places_nearby',
                          endpoint='places_nearby')

        self.add_resource(Journeys.Journeys,
                          region + '<uri:uri>/journeys',
                          coord + '<uri:uri>/journeys',
                          region + 'journeys',
                          coord + 'journeys',
                          '/journeys',
                          endpoint='journeys')

        if app.config['GRAPHICAL_ISOCHRONE']:
            self.add_resource(GraphicalIsochrone.GraphicalIsochrone,
                              region + 'isochrones',
                              endpoint='isochrones')

        if app.config.get('HEAT_MAP'):
            self.add_resource(HeatMap.HeatMap,
                              region + 'heat_maps',
                              endpoint='heat_maps')

        self.add_resource(Schedules.RouteSchedules,
                          region + '<uri:uri>/route_schedules',
                          coord + '<uri:uri>/route_schedules',
                          '/route_schedules',
                          endpoint='route_schedules')

        self.add_resource(Schedules.NextArrivals,
                          region + '<uri:uri>/arrivals',
                          coord + '<uri:uri>/arrivals',
                          region + 'arrivals',
                          coord + 'arrivals',
                          endpoint='arrivals')

        self.add_resource(Schedules.NextDepartures,
                          region + '<uri:uri>/departures',
                          coord + '<uri:uri>/departures',
                          region + 'departures',
                          coord + 'departures',
                          endpoint='departures')

        self.add_resource(Schedules.StopSchedules,
                          region + '<uri:uri>/stop_schedules',
                          coord + '<uri:uri>/stop_schedules',
                          '/stop_schedules',
                          endpoint='stop_schedules')

        self.add_resource(Disruptions.TrafficReport,
                          region + 'traffic_reports',
                          region + '<uri:uri>/traffic_reports',
                          endpoint='traffic_reports')

        self.add_resource(Status.Status, region + 'status', endpoint='status')
        self.add_resource(GeoStatus.GeoStatus,
                          region + '_geo_status',
                          endpoint='geo_status')

        self.add_resource(Calendars.Calendars,
                          region + 'calendars',
                          region + '<uri:uri>/calendars',
                          region + "calendars/<id:id>",
                          endpoint="calendars")