Example #1
0
 def create_client(self, client_name, client_secret):
     if not self.admin_token:
         raise Exception("Must authenticate as admin")
     else:
         headers = {
             'Pragma': 'no-cache',
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'Cache-Control': 'no-cache',
             'Authorization': 'Basic ' + self.admin_token
         }
         data = {
             "client_id":
             client_name,
             "client_secret":
             client_secret,
             "scope": ["uaa.none", "openid"],
             "authorized_grant_types": [
                 "authorization_code", "client_credentials",
                 "refresh_token", "password"
             ],
             "authorities": ["openid", "uaa.none", "uaa.resource"],
             "autoapprove": ["openid"]
         }
         r = requests.post(self.url + '/oauth/clients',
                           proxies=get_proxy(),
                           headers=headers,
                           data=data)
         r.raise_for_status()
         return yaml.safe_load(json.dumps(r.json()))
Example #2
0
 def text_query(self, name, text):
     temp_url = self.url + '/collections/' + name + '/text-query/free/' + text
     r = requests.delete(temp_url,
                         proxies=get_proxy(),
                         headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
    def search_location(self, location_type=None, bbox=None, page=None, size=None):
        params = {}
        if location_type is not None:
            if type(location_type).__name__ == 'str':
                if location_type not in ['PARKING_SPOT','PARKING_ZONE','CROSSWALK','TRAFFIC_LANE',
                                         'RETAIL_STORE', 'PARKING_SPOT,PARKING_ZONE']:
                    raise Exception('Invalid location type for parking')
                else:
                    params['q'] = 'location_-type:' + location_type
            elif type(location_type).__name__ in ['list', 'tuple']:
                if any(location_type) not in ['PARKING_SPOT','PARKING_ZONE','CROSSWALK','TRAFFIC_LANE',
                                              'RETAIL_STORE', 'PARKING_SPOT,PARKING_ZONE']:
                    raise Exception('Invalid location type for parking')
                else:
                    params['q'] = 'location_-type:' + ';'.join(location_type)

        if bbox is not None and type(bbox).__name__ in ['tuple', 'list'] and len(bbox) == 4:
            params['bbox'] = str(bbox[0])+':'+str(bbox[1])+','+str(bbox[2])+':'+str(bbox[3])

        if page is not None and type(page).__name__ in ['int', 'float', 'long', 'complex']:
            params['page'] = int(page)

        if size is not None and type(size).__name__ in ['int', 'float', 'long', 'complex']:
            params['size'] = int(size)

        r = requests.get(self.url + '/locations/search', proxies=get_proxy(), headers=self.headers,
                         params=params)
        r.raise_for_status()
        return yaml.safe_load(json.dumps(r.json()))
    def search_assets(self, q_type=None, q_value=None, bbox=None, page=None, size=None):
        params = {}
        if q_type is not None and q_value is not None:
            if q_type not in ['device-type', 'media-type', 'event-type']:
                raise Exception('invalid q type')

            elif q_type == 'device-type':
                if type(q_value) in ['list', 'tuple']:
                    if any(q_value) not in ['NODE', 'CAMERA', 'MIC', 'ENV']:
                        raise Exception('Invalid q value for device_type')
                    else:
                        params['q'] = 'device-type:' + ';'.join(q_value)
                elif type(q_value).__name__ != 'str':
                    raise Exception('Invalid type for q value')
                elif q_value not in ['NODE', 'CAMERA', 'MIC', 'ENV']:
                    raise Exception('Invalid q value for device-type')
                else:
                    params['q'] = 'device-type:' + q_value

            elif q_type == 'media-type':
                if type(q_value) in ['list', 'tuple']:
                    if any(q_value) not in ['IMAGE', 'VIDEO', 'AUDIO']:
                        raise Exception('Invalid q value for media_type')
                    else:
                        params['q'] = 'media-type:' + ';'.join(q_value)
                elif type(q_value).__name__ != 'str':
                    raise Exception('Invalid type for q value')
                elif q_value not in ['IMAGE', 'VIDEO', 'AUDIO']:
                    raise Exception('Invalid q value for media-type')
                else:
                    params['q'] = 'media-type:' + q_value

            elif q_type == 'event-type':
                if type(q_value) in ['list', 'tuple']:
                    if any(q_value) not in ['PKIN', 'PKOUT', 'SFIN', 'SFOUT', 'TFEVT', 'ENCGH'
                                                            'TEMP', 'OCCUPANCY', 'LIGHT_LEVEL']:
                        raise Exception('Invalid q value for event_type')
                    else:
                        params['q'] = 'event-type:' + ';'.join(q_value)
                elif type(q_value).__name__ != 'str':
                    raise Exception('Invalid type for q value')
                elif q_value not in ['PKIN', 'PKOUT', 'SFIN', 'SFOUT', 'TFEVT', 'ENCGH'
                                                            'TEMP', 'OCCUPANCY', 'LIGHT_LEVEL']:
                    raise Exception('Invalid q value for event-type')
                else:
                    params['q'] = 'event-type:' + q_value

        if bbox is not None and type(bbox).__name__ in ['tuple', 'list'] and len(bbox) == 4:
            params['bbox'] = str(bbox[0])+':'+str(bbox[1])+','+str(bbox[2])+':'+str(bbox[3])

        if page is not None and type(page).__name__ in ['int', 'float', 'long', 'complex']:
            params['page'] = int(page)

        if size is not None and type(size).__name__ in ['int', 'float', 'long', 'complex']:
            params['size'] = int(size)

        r = requests.get(self.url + '/assets/search', proxies=get_proxy(), headers=self.headers, params=params)
        r.raise_for_status()
        return yaml.safe_load(json.dumps(r.json()))
Example #5
0
 def reverse_get_all(self, request_data):
     url = 'https://api.pitneybowes.com​/location-intelligence/​geocode-service/v1/transient​/premium/reverseGeocode'
     r = requests.post(url,
                       proxies=get_proxy(),
                       headers=self.headers,
                       data=request_data)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #6
0
 def spatial_query(self, name, x1, y1, x2, y2):
     temp_url = self.url + '/collections/' + name + '/spatial-query/bbox-interacts/{0},{1},{2},{3}'.format(
         x1, y1, x2, y2)
     r = requests.delete(temp_url,
                         proxies=get_proxy(),
                         headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #7
0
 def authenticate_user(self, short_token, username, password):
     headers = {
         'Pragma': 'no-cache',
         'Content-Type': 'application/x-www-form-urlencoded',
         'Accept': 'application/json',
         'Cache-Control': 'no-cache',
         'Authorization': 'Basic ' + short_token
     }
     data = 'username='******'&password='******'&grant_type=password'
     r = requests.post(self.url + '/oauth/token',
                       proxies=get_proxy(),
                       headers=headers,
                       data=data)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))['access_token']
Example #8
0
 def authenticate_client(self, short_token, client):
     headers = {
         'Pragma': 'no-cache',
         'Content-Type': 'application/x-www-form-urlencoded',
         'Accept': 'application/json',
         'Cache-Control': 'no-cache',
         'Authorization': 'Basic ' + short_token
     }
     data = 'client_id=' + client + '&grant_type=client_credentials'
     r = requests.post(self.url + '/oauth/token',
                       proxies=get_proxy(),
                       headers=headers,
                       data=data)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))['access_token']
Example #9
0
 def add_to_group(self, username, group_name):
     if not self.admin_token:
         raise Exception("Must authenticate as admin")
     else:
         headers = {
             'Pragma': 'no-cache',
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'Cache-Control': 'no-cache',
             'Authorization': 'Basic ' + self.admin_token
         }
         data = {'displayName': group_name, 'userName': username}
         r = requests.put(self.url + '/Groups',
                          proxies=get_proxy(),
                          headers=headers)
         r.raise_for_status()
Example #10
0
 def get_group(self, group_name):
     if not self.admin_token:
         raise Exception("Must authenticate as admin")
     else:
         headers = {
             'Pragma': 'no-cache',
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'Cache-Control': 'no-cache',
             'Authorization': 'Basic ' + self.admin_token
         }
         r = requests.get(self.url + '/Groups?filter=displayName+eq+%22' +
                          group_name + '%22&startIndex=1',
                          proxies=get_proxy(),
                          headers=headers)
         r.raise_for_status()
         return yaml.safe_load(json.dumps(r.json()))
Example #11
0
 def __init__(self, api_key, secret):
     base64_key = base64.b64encode(api_key + ":" + secret)
     temp_headers = {
         'Authorization': 'Basic ' + base64_key,
         'Content-Type': 'application/x-www-form-urlencoded'
     }
     data = 'grant_type=client_credentials'
     r = requests.get('https://api.pitneybowes.com/oauth/token',
                      proxies=get_proxy(),
                      headers=temp_headers)
     r.raise_for_status()
     access_token = yaml.safe_load(json.dumps(r.json()))['access_token']
     self.headers = {
         'Accept': 'application/json',
         'Content-Type': 'application/json',
         'Authorization': 'Bearer ' + access_token
     }
    def get_live_events(self, asset_id, event_types, size):
        params = {}
        if type(event_types) in ['list', 'tuple']:
            for event_type in event_types:
                if event_type not in ['PKIN', 'PKOUT', 'SFIN', 'SFOUT', 'TFEVT', 'ENCGH',
                                      'TEMP', 'OCCUPANCY', 'LIGHT_LEVEL']:
                    raise Exception('Invalid Event Type')
            params['event-types'] = ','.join(event_types)


        if size is not None and type(size).__name__ in ['int', 'float', 'long', 'complex']:
            params['size'] = int(size)

        r = requests.get(self.url + '/assets/' + asset_id + '/live-events', proxies=get_proxy(),
                         headers=self.headers, params=params)
        r.raise_for_status()
        return yaml.safe_load(json.dumps(r.json()))
Example #13
0
 def authenticate_admin(self, short_token):
     headers = {
         'Pragma': 'no-cache',
         'Content-Type': 'application/x-www-form-urlencoded',
         'Accept': 'application/json',
         'Cache-Control': 'no-cache',
         'Authorization': 'Basic ' + short_token,
         'Connection': 'keep-alive'
     }
     data = "grant_type=client_credentials"
     r = requests.post(self.url + '/oauth/token',
                       proxies=get_proxy(),
                       headers=headers,
                       data=data)
     r.raise_for_status()
     self.admin_token = r.json()['access_token']
     return self.admin_token
Example #14
0
 def create_group(self, group_name):
     if not self.admin_token:
         raise Exception("Must authenticate as admin")
     else:
         headers = {
             'Pragma': 'no-cache',
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'Cache-Control': 'no-cache',
             'Authorization': 'Basic ' + self.admin_token
         }
         data = {"displayName": group_name}
         r = requests.post(self.url + '/Groups',
                           proxies=get_proxy(),
                           headers=headers,
                           data=data)
         r.raise_for_status()
         return yaml.safe_load(json.dumps(r.json()))
    def get_media(self, asset_id, media_types, start, end, location_id=None, page=None, size=None):
        params = {}
        if type(media_types) in ['list', 'tuple']:
            for media_type in media_types:
                if media_type not in ['IMAGE', 'VIDEO', 'AUDIO']:
                    raise Exception('Invalid media Type')
            params['media-types'] = ','.join(media_types)

        params['start-ts'] = start
        params['end-ts'] = end

        if location_id is not None and type(location_id).__name__ == 'str':
            params['locationId'] = location_id
        if page is not None and type(page).__name__ in ['int', 'float', 'long', 'complex']:
            params['page'] = int(page)
        if size is not None and type(size).__name__ in ['int', 'float', 'long', 'complex']:
            params['size'] = int(size)

        r = requests.get(self.url + '/assets/' + asset_id + '/media', proxies=get_proxy(),
                         headers=self.headers, params=params)
        r.raise_for_status()
        return yaml.safe_load(json.dumps(r.json()))
Example #16
0
 def get(self,
         place_name=None,
         main_address=None,
         last_line=None,
         area_name_1=None,
         area_name_2=None,
         area_name_3=None,
         area_name_4=None,
         postal_code=None,
         country=None):
     if self.premium:
         url = 'https://api.pitneybowes.com​/location-intelligence/​geocode-service/v1/transient​/premium/geocode'
     else:
         url = 'https://api.pitneybowes.com​/location-intelligence/​geocode-service/v1/transient​/basic/geocode'
     params = []
     if place_name:
         params.append('placeName=' + place_name)
     if main_address:
         params.append('mainAddress=' + main_address)
     if last_line:
         params.append('lastLine=' + last_line)
     if area_name_1:
         params.append('areaName1=' + area_name_1)
     if area_name_2:
         params.append('areaName1=' + area_name_2)
     if area_name_3:
         params.append('areaName1=' + area_name_3)
     if area_name_4:
         params.append('areaName1=' + area_name_4)
     if postal_code:
         params.append('postalCode=' + postal_code)
     if country:
         params.append('country=' + country)
     url += '&'.join(params)
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #17
0
 def create_user(self, username, password, email):
     if not self.admin_token:
         raise Exception("Must authenticate as admin")
     else:
         headers = {
             'Pragma': 'no-cache',
             'Content-Type': 'application/json',
             'Accept': 'application/json',
             'Cache-Control': 'no-cache',
             'Authorization': 'Basic ' + self.admin_token
         }
         data = {
             "userName": username,
             "password": password,
             "emails": [{
                 "value": email
             }]
         }
         r = requests.post(self.url + '/Users',
                           proxies=get_proxy(),
                           headers=headers,
                           data=data)
         r.raise_for_status()
         return yaml.safe_load(json.dumps(r.json()))
Example #18
0
 def update_policy_set(self, policy_set_id, policy_set):
     r = requests.put(self.url + '/policy-set/' + policy_set_id,
                      proxies=get_proxy(),
                      headers=self.headers,
                      data=policy_set)
     r.raise_for_status()
Example #19
0
 def demographics_by_location(self, lat, lon):
     url = 'http://api.pitneybowes.com/location-intelligence/geolife/v1/​demographics/bylocation?' + \
           'latitude=' + lat + '&longitude=' + lon
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #20
0
 def demographics_by_address(self, address):
     url = 'https://api.pitneybowes.com/location-intelligence/geolife/v1/​demographics/byaddress?address=1 ' + address
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #21
0
 def psap_by_address(self, address):
     url = 'https://api.pitneybowes.com/location-​intelligence/geo911/v1/psap/byaddress​?address=1 ' + address
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #22
0
 def geo_search(self, lat, lon, search_text='Global'):
     url = 'https://api.pitneybowes.com/location-intelligence/​geosearch/v1/locations?searchText=1%20' + \
           search_text + '%20V&longitude=' + lon +  '&latitude=' + lat
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #23
0
 def timezone_by_location(self, lat, lon):
     url = self.base_url + '/timezone/bylocation​?' + 'latitude=' + lat + '&longitude=' + lon
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #24
0
 def taxrate_by_address(self, address, tax_rate_type='Auto'):
     url = 'http://api.pitneybowes.com/location-​intelligence/geotax/v1/taxrate/' + tax_rate_type + \
           '/byaddress?address=' + address
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #25
0
 def taxrate_by_location(self, lat, lon, tax_rate_type='Auto'):
     url = 'http://api.pitneybowes.com/location-intelligence​/geotax/v1/taxrate/' + tax_rate_type + \
           '/​bylocation?latitude=' + lat + '&longitude=' + lon
     r = requests.get(url, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
 def get_location(self, location_id):
     r = requests.get(self.url + '/locations/' + location_id, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
    def get_location_analytics(self, location_id, analytic_names, analytic_categories, start, end):
        params = {}
        if type(analytic_names).__name__ in ['list', 'tuple']:
            params['analytic-names'] = ';'.join(analytic_names)
        elif type(analytic_names).__name__ =='str':
            params['analytic-names'] = analytic_names

        if type(analytic_categories).__name__ in ['list', 'tuple']:
            params['analytic-categories'] = ';'.join(analytic_categories)
        elif type(analytic_categories).__name__ =='str':
            params['analytic-categories'] = analytic_categories

        params['start-ts'] = start
        params['end-ts'] = end

        r = requests.get(self.url + '/locations/' + location_id + '/analytics', proxies=get_proxy(),
                         headers=self.headers, params=params)
        r.raise_for_status()
        return yaml.safe_load(json.dumps(r.json()))
Example #28
0
 def get_collections(self):
     r = requests.get(self.url + '/collections',
                      proxies=get_proxy(),
                      headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
 def get_asset(self, asset_id):
     r = requests.get(self.url + '/assets/' + asset_id, proxies=get_proxy(), headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))
Example #30
0
 def delete(self, name):
     r = requests.delete(self.url + '/collections/' + name,
                         proxies=get_proxy(),
                         headers=self.headers)
     r.raise_for_status()
     return yaml.safe_load(json.dumps(r.json()))