Esempio n. 1
0
    def _build_params(self, location, provider_key, **kwargs):
        # handle specific case of proximity (aka 'location' for google)
        bbox = kwargs.get('proximity', '')
        if bbox:
            bbox = BBox.factory(bbox)
            # do not forget to convert bbox to google expectations...
            bbox = bbox.latlng

        # define all
        params = {
            # required
            'query': location,
            'key': provider_key,

            # optional
            'location': bbox,
            'radius': kwargs.get('radius', ''),
            'language': kwargs.get('language', ''),
            'minprice': kwargs.get('minprice', ''),
            'maxprice': kwargs.get('maxprice', ''),
            'type': kwargs.get('type', ''),
        }

        # optional, don't send unless needed
        if 'opennow' in kwargs:
            params['opennow'] = ''

        # optional, don't send unless needed
        if 'pagetoken' in kwargs:
            params['pagetoken'] = kwargs['pagetoken']

        return params
Esempio n. 2
0
    def _build_params(self, location, provider_key, **kwargs):
        # HERE Credentials
        app_id = kwargs.get('app_id', here_app_id)
        app_code = kwargs.get('app_code', here_app_code)
        if not bool(app_id and app_code):
            raise ValueError("Provide app_id & app_code")

        # URL Params
        params = {
            'searchtext': location,
            'app_id': app_id,
            'app_code': app_code,
            'gen': 9,
            'maxresults': kwargs.get('maxRows', 1),
            'language': kwargs.get('language', 'en'),
        }

        # bounding box if present
        bbox = kwargs.get('bbox')
        if bbox:
            bbox = BBox(bbox=bbox)
            # do not forget to convert bbox to mapbox expectations...
            params['bbox'] = u'{north},{west};{south},{east}'.format(
                west=bbox.west,
                east=bbox.east,
                south=bbox.south,
                north=bbox.north)

        for value in self.qualified_address:
            if kwargs.get(value) is not None:
                params[value] = kwargs.get(value)

        return params
Esempio n. 3
0
 def bbox(self):
     south = self._bounds.get('southwest', {}).get('lat')
     north = self._bounds.get('northeast', {}).get('lat')
     west = self._bounds.get('southwest', {}).get('lng')
     east = self._bounds.get('northeast', {}).get('lng')
     if all([south, west, north, east]):
         return BBox.factory([south, west, north, east]).as_dict
Esempio n. 4
0
 def bbox(self):
     south = self._bounds.get('southwest', {}).get('lat')
     north = self._bounds.get('northeast', {}).get('lat')
     west = self._bounds.get('southwest', {}).get('lng')
     east = self._bounds.get('northeast', {}).get('lng')
     if all([south, west, north, east]):
         return BBox.factory([south, west, north, east]).as_dict
Esempio n. 5
0
    def _build_params(self, location, provider_key, **kwargs):
        base_params = {
            'access_token': provider_key,
            'country': kwargs.get('country'),
            'types': kwargs.get('types'),
        }
        # handle proximity
        proximity = kwargs.get('proximity', None)
        if proximity is not None:
            proximity = Location(proximity)
            # do not forget to convert bbox to mapbox expectations...
            base_params['proximity'] = u'{longitude},{latitude}'.format(
                longitude=proximity.longitude, latitude=proximity.latitude)

        bbox = kwargs.get('bbox')
        if bbox:
            bbox = BBox(bbox=bbox)
            # do not forget to convert bbox to mapbox expectations...
            base_params['bbox'] = u'{west},{south},{east},{north}'.format(
                west=bbox.west,
                east=bbox.east,
                south=bbox.south,
                north=bbox.north)

        return base_params
Esempio n. 6
0
    def _build_params(self, location, provider_key, **kwargs):
        # handle specific case of proximity (aka 'location' for google)
        bbox = kwargs.get('proximity', '')
        if bbox:
            bbox = BBox.factory(bbox)
            # do not forget to convert bbox to google expectations...
            bbox = bbox.latlng

        # define all
        params = {
            # required
            'query': location,
            'key': provider_key,

            # optional
            'location': bbox,
            'radius': kwargs.get('radius', ''),
            'language': kwargs.get('language', ''),
            'minprice': kwargs.get('minprice', ''),
            'maxprice': kwargs.get('maxprice', ''),
            'type': kwargs.get('type', ''),
        }

        # optional, don't send unless needed
        if 'opennow' in kwargs:
            params['opennow'] = ''

        # optional, don't send unless needed
        if 'pagetoken' in kwargs:
            params['pagetoken'] = kwargs['pagetoken']

        return params
Esempio n. 7
0
    def _build_params(self, location, provider_key, **kwargs):
        """Will be overridden according to the targetted web service"""
        base_kwargs = {
            'q': location,
            'fuzzy': kwargs.get('fuzzy', 0.8),
            'username': provider_key,
            'maxRows': kwargs.get('maxRows', 1),
        }
        # check out for bbox in kwargs
        bbox = kwargs.pop('proximity', None)
        if bbox is not None:
            bbox = BBox.factory(bbox)
            base_kwargs.update(
                {'east': bbox.east, 'west': bbox.west,
                 'north': bbox.north, 'south': bbox.south})

        # look out for valid extra kwargs
        supported_kwargs = set((
            'name', 'name_equals', 'name_startsWith', 'startRow',
            'country', 'countryBias', 'continentCode',
            'adminCode1', 'adminCode2', 'adminCode3', 'cities',
            'featureClass', 'featureCode',
            'lang', 'type', 'style',
            'isNameRequired', 'tag', 'operator', 'charset',
            'east', 'west', 'north', 'south',
            'orderby', 'inclBbox',
        ))
        found_kwargs = supported_kwargs & set(kwargs.keys())
        LOGGER.debug("Adding extra kwargs %s", found_kwargs)

        # update base kwargs with extra ones
        base_kwargs.update(dict(
            [(extra, kwargs[extra]) for extra in found_kwargs]
        ))
        return base_kwargs
Esempio n. 8
0
 def test_factory_coordinates_dict(self):
     bbox = BBox.factory({
         'south': "43.0",
         'west': -80.5,
         'north': "43.6",
         'east': -80.0
     })
     assert bbox.latlng == [43.3, -80.25]
Esempio n. 9
0
 def test_factory_latlng_dict(self):
     bbox = BBox.factory({'lat': 43.0, 'lng': "-80.0"})
     assert BBox.DEGREES_TOLERANCE == 0.5
     assert bbox.south == 42.5
     assert bbox.north == 43.5
     assert bbox.west == -80.5
     assert bbox.east == -79.5
     assert bbox.latlng == [43.0, -80.0]
Esempio n. 10
0
 def test_side_attributes(self):
     bbox = BBox.factory([-80.0, 43.0])
     assert bbox.lat == -80.0
     assert bbox.lng == 43.0
     assert bbox.latitude == -80.0
     assert bbox.longitude == 43.0
     assert bbox.latlng == [-80.0, 43.0]
     assert bbox.xy == [43.0, -80.0]
Esempio n. 11
0
 def bbox(self):
     extent = self._properties.get('extent')
     if extent and all(extent):
         west = extent[0]
         north = extent[1]
         east = extent[2]
         south = extent[3]
         return BBox.factory([south, west, north, east]).as_dict
Esempio n. 12
0
 def bbox(self):
     viewport = self.raw.get('viewport', {})
     if viewport:
         bbox = {
             'south': viewport.get('btmRightPoint')['lon'],
             'west': viewport.get('btmRightPoint')['lat'],
             'north': viewport.get('topLeftPoint')['lon'],
             'east': viewport.get('topLeftPoint')['lat'],
         }
         return BBox.factory(bbox).as_dict
Esempio n. 13
0
 def bbox(self):
     viewport = self.raw.get('viewport', {})
     if viewport:
         bbox = {
             'south': viewport.get('btmRightPoint')['lon'],
             'west': viewport.get('btmRightPoint')['lat'],
             'north': viewport.get('topLeftPoint')['lon'],
             'east': viewport.get('topLeftPoint')['lat'],
         }
         return BBox.factory(bbox).as_dict
Esempio n. 14
0
    def _build_params(self, location, provider_key, **kwargs):
        base_params = {
            'access_token': provider_key,
            'country': kwargs.get('country'),
            'types': kwargs.get('types'),
        }
        # handle proximity
        bbox = kwargs.get('proximity', None)
        if bbox is not None:
            bbox = BBox(bbox)
            # do not forget to convert bbox to mapbox expectations...
            base_params['proximity'] = u'{0},{1}'.format(bbox.xy)

        return base_params
Esempio n. 15
0
    def _build_params(self, location, provider_key, **kwargs):
        params = {
            'key': provider_key,
            'location': location,
            'maxResults': kwargs.get("maxRows", 1),
            'outFormat': 'json',
        }

        bbox = kwargs.get('bbox')
        if bbox:
            bbox = BBox(bbox=bbox)
            params['boundingBox'] = u'{north},{west},{south},{east}'.format(
                west=bbox.west,
                east=bbox.east,
                south=bbox.south,
                north=bbox.north)

        return params
Esempio n. 16
0
 def test_dict_output(self):
     bbox = BBox.factory({'bbox': [-80.5, 43.0, -80.0, 43.6]})
     assert bbox.as_dict == {
         'northeast': [43.6, -80.0],
         'southwest': [43.0, -80.5]
     }
Esempio n. 17
0
 def test_factory_bbox_dict(self):
     bbox = BBox.factory({'bbox': [-80.5, "43.0", "-80.0", 43.6]})
     assert bbox.latlng == [43.3, -80.25]
Esempio n. 18
0
 def bbox(self):
     return BBox.factory(self.latlng).as_dict
Esempio n. 19
0
 def test_factory_error_dict(self):
     with pytest.raises(ValueError):
         BBox.factory({'dummy': 43.0})
Esempio n. 20
0
 def bbox(self):
     return BBox.factory(self.latlng).as_dict
Esempio n. 21
0
 def test_factory_bounds_dict(self):
     bbox = BBox.factory({
         'southwest': [43.0, -80.5],
         'northeast': ["43.6", "-80.0"]
     })
     assert bbox.latlng == [43.3, -80.25]
Esempio n. 22
0
 def test_factory_bounds_list(self):
     bbox = BBox.factory([-80.5, "43.0", "-80.0", 43.6])
     assert bbox.latlng == [43.3, -80.25]
Esempio n. 23
0
 def test_factory_error_list(self):
     with pytest.raises(ValueError):
         BBox.factory([1, 2, 3])
Esempio n. 24
0
 def test_factory_latlng_list(self):
     bbox = BBox.factory(["-80.0", "43.0"])
     assert bbox.latlng == [-80.0, 43.0]