Helpful WebClient class to interact with APIs on the web
Project description
Install
$ pip3 install webclient-helper
Usage
import webclient_helper as wh
Create an instance of WebClient and use the HTTP methods (OPTIONS, HEAD, GET, POST, PUT, PATCH, DELETE) to interact with an API.
WebClient(username=None, password=None, token=None, token_type=None, base_url='', user_agent=None, content_type='application/json', extra_headers={}) Interact with an API on the web If you need to obtain a token from a login endpoint, define a "login" method when you subclass WebClient and set self._token and self._token_type Example: def login(self): headers = {'Content-Type': 'application/json'} data = {'email': self._username, 'password': self._password} response = self.session.post( self._base_url + '/api/login', headers=headers, json=data ) self._token = response.json().get('access_token') self._token_type = 'Bearer' __init__(self, username=None, password=None, token=None, token_type=None, base_url='', user_agent=None, content_type='application/json', extra_headers={}) - username: if specified, set auth on session (requires password) - password: if specified, set auth on session (requires username) - token: if specified, use this token in the "Authorization" header (requires token_type) - token_type: if specified, use as part of the value in the "Authorization" header - base_url: base url for service/API that a subclass would interact with - user_agent: if specified, set "User-Agent" header - content_type: content type for requests - extra_headers: a dict of extra headers to set on the session If no login method is defined, any supplied username/password will be passed to new_requests_session (for basic auth)
Example (GitHub)
Note: To use the GitHub API, first generate a “personal access token” at https://github.com/settings/tokens/new
from os import getenv access_token = getenv('GITHUB_ACCESS_TOKEN') gh_client = wh.WebClient(token=access_token, token_type='token') data = gh_client.GET('https://api.github.com/user/repos')
Example (subclass with custom login)
class SomeClient(wh.WebClient): def login(self): headers = {'Content-Type': 'application/json'} data = {'email': self._username, 'password': self._password} response = self.session.post( self._base_url + '/api/login', headers=headers, json=data ) self._token = response.json().get('access_token') self._token_type = 'Bearer' def get_something(self, params=None, debug=False): return self.GET( self._base_url + '/api/something', params=params, debug=debug ) some_client = SomeClient( username='myuser', password='mypass', base_url='https://somewhere.com', ) something1 = some_client.get_something(params={'x': 1, 'y': 5}) something2 = some_client.get_something(params={'x': 2, 'y': 10})
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for webclient_helper-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df1f3a2c7fba2a54de857acdf967cb9a2919a6f0197b04efa0d07e7556eb9a85 |
|
MD5 | 637f2fa95327e8384934c16b98beb08d |
|
BLAKE2b-256 | 84d01dc8d732f14bd9d8c5e8d55c0d3abc3403bd127f0291ea78059a76721f03 |