Joining json API calls together
Project description
APIBridge
Joining json API calls together
Installation
pip install api_bridge
Usage
The API-class
API(url: str,
method: Method = Method.GET,
result_filter: Optional[Callable[[Dict[str, Any]], Dict[str, Any]]] = None,
validate: Optional[Callable[[Dict[str, Any]], bool]] = None,
post_data: Optional[Dict[str, Any]] = None
)
url The url to run a request with
method The Enum from api_bridge.methods.Method
[either Method.GET
or .POST
; defaults to .GET
]
result_filter A filter for the retrieved json data api_bridge.filter.Filter
[defaults to None
]
Filter(**out: str)
out The items of the filtered data
examples:
Filter(lat='latitude', long='longitude') # {'lat': data['latitude'], 'long': data['longitude']}
Filter(sunrise='results sunrise') # spaces represent {'sunrise': data['results]['sunrise']}
validate An additional test based on the received data in addition to the http-status-code [defaults to None]
example:
validate=lambda data: data['status'] == 'successful'
post_data Data if Method.POST
was provided
Requests
There are two ways to run a request
from api_bridge.api import API
from api_bridge.filter import Filter
from api_bridge.container import Container
LOCATION_URL = 'https://ipapi.co/json/'
TIME_URL = 'https://api.sunrise-sunset.org/json?lat={lat}&lng={long}&date=today'
The chain
-method
result = API.chain(
API(LOCATION_URL, result_filter=Filter(lat='latitude', long='longitude')),
API(TIME_URL, validate=lambda response: response['status'] == 'OK', result_filter=Filter(sunrise='results sunrise'))
)
result == {'sunrise': '4:08:10 AM'}
The (esoteric) operator-method >
or >>
result = API('https://ipapi.co/json/', result_filter=Filter(lat='latitude', long='longitude')) > \
API('https://api.sunrise-sunset.org/json?lat={lat}&lng={long}&date=today', validate=lambda response:
response['status'] == 'OK', result_filter=Filter(sunrise='results sunrise')) > \
Container()
result == {'sunrise': '4:08:10 AM'}
Important the gt and rshift operator mehtod must terminate with an
Operator()
, which can be treated a dict afterwards
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file api_bridge-0.0.3.tar.gz
.
File metadata
- Download URL: api_bridge-0.0.3.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba1ece6e1ba95b3de5cad7a59afb1b115822826b4efa01f878b3b82ef4503d3b |
|
MD5 | 733468b73aad9c4220487c55d1705053 |
|
BLAKE2b-256 | 722b5e9fe75a0cd7042c146dbc0b26eb35f5812c4ecb8fdb87184f063b4f0e3f |
File details
Details for the file api_bridge-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: api_bridge-0.0.3-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62a232513ace9c60de750528f3536bb6027fa492efc9e3fa79fe094222c3baad |
|
MD5 | 26cc94419de1ba394d8f012834eb2cf6 |
|
BLAKE2b-256 | 0b2a755d1a26002b9767e5c4b4f8a150ba402798e5984cb8e529ab0ad77fb045 |