예제 #1
0
    def _format_coord(cls, pt_object, api='route'):
        if api not in ['route', 'sources_to_targets']:
            logging.getLogger(__name__).error('Valhalla routing service , invalid api {}'.format(api))
            raise ApiNotFound('Valhalla routing service , invalid api {}'.format(api))

        coord = get_pt_object_coord(pt_object)
        dict_coord = {"lat": coord.lat, "lon": coord.lon}
        if api == 'route':
            dict_coord["type"] = "break"
        return dict_coord
예제 #2
0
 def dispatch(self, arguments, api, instance_obj=None, instance_name=None,
              request=None):
     if instance_obj:
         instance_name = instance_obj.name
     if instance_name in self.instances:
         instance = self.instances[instance_name]
         if api in instance.script.apis:
             api_func = getattr(instance.script, api)
             return api_func(arguments, instance)
         else:
             raise ApiNotFound(api)
     else:
         raise RegionNotFound(instance_name)
예제 #3
0
    def dispatch(self, arguments, api, instance_name=None):
        if instance_name not in self.instances:
            raise RegionNotFound(instance_name)

        instance = self.instances[instance_name]

        scenario = instance.scenario(arguments.get('_override_scenario'))
        if not hasattr(scenario, api) or not callable(getattr(scenario, api)):
            raise ApiNotFound(api)

        publication_date = instance.publication_date
        api_func = getattr(scenario, api)
        resp = api_func(arguments, instance)
        if instance.publication_date != publication_date:
            self._clear_cache()
        return resp
예제 #4
0
    def dispatch(self,
                 arguments,
                 api,
                 instance_obj=None,
                 instance_name=None,
                 request=None):
        if instance_obj:
            instance_name = instance_obj.name
        if instance_name not in self.instances:
            raise RegionNotFound(instance_name)

        instance = self.instances[instance_name]
        if not hasattr(instance.scenario, api) or not callable(
                getattr(instance.scenario, api)):
            raise ApiNotFound(api)

        api_func = getattr(instance.scenario, api)
        resp = api_func(arguments, instance)
        if resp.HasField("publication_date") and\
          instance.publication_date != resp.publication_date:
            self._clear_cache()
            instance.publication_date = resp.publication_date
        return resp