Coverage for mindsdb / integrations / handlers / zipcodebase_handler / zipcodebase.py: 0%
39 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1import requests
4class ZipCodeBaseClient:
6 def __init__(self, api_key):
7 self.api_key = api_key
8 self.base_endpoint = "https://app.zipcodebase.com/api/v1"
10 def make_request(self, url, params=None):
11 headers = {'Content-type': 'application/json'}
12 if self.api_key:
13 headers['apikey'] = self.api_key
14 resp = requests.get(url, headers=headers, params=params)
15 content = {}
16 if resp.status_code == 200:
17 content = {'content': resp.json(), 'code': 200}
18 else:
19 content = {'content': {}, 'code': resp.status_code, 'error': resp.text}
20 return content
22 def code_to_location(self, codes):
23 url = f'{self.base_endpoint}/search'
24 params = (
25 ("codes", codes),
26 )
27 return self.make_request(url, params)
29 def codes_within_radius(self, code, radius, country, unit):
30 url = f'{self.base_endpoint}/radius'
31 params = (
32 ("code", code),
33 ("radius", radius),
34 ("country", country),
35 ("unit", unit),
36 )
37 return self.make_request(url, params)
39 def codes_by_city(self, city, country, limit):
40 url = f'{self.base_endpoint}/code/city'
41 params = (
42 ("city", city),
43 ("country", country),
44 ("limit", limit),
45 )
46 return self.make_request(url, params)
48 def codes_by_state(self, state, country, limit):
49 url = f'{self.base_endpoint}/code/state'
50 params = (
51 ("state_name", state),
52 ("country", country),
53 ("limit", limit),
54 )
55 return self.make_request(url, params)
57 def states_by_country(self, country):
58 url = f'{self.base_endpoint}/country/province'
59 params = (
60 ("country", country),
61 )
62 return self.make_request(url, params)
64 def remaining_requests(self):
65 url = f'{self.base_endpoint}/status'
66 params = ()
67 return self.make_request(url, params)