It's a plugin for Muffin framework which provides support for external APIs
Project description
Muffin-APIClient – Its a plugin for Muffin framework which provides support for external APIs
Requirements
python >= 3.7
Installation
Muffin-APIClient should be installed using pip:
pip install muffin-apiclient
Usage
Initialize and setup the plugin:
import muffin
import muffin_apiclient
# Create Muffin Application
app = muffin.Application('example')
# Initialize the plugin
# As alternative: apiclient = muffin_apiclient.Plugin(app, **options)
apiclient = muffin_apiclient.Plugin()
apiclient.setup(app, root_url='https://api.github.com')
Github API (https://developer.github.com/v4/):
github = muffin_apiclient.Plugin(app, name='github', root_url='https://api.github.com', defaults={
'headers': {
'Authorization': 'token OAUTH-TOKEN'
}
})
# Read information about the current repository
repo = await github.api.repos.klen['muffin-apiclient'].get()
print(repo) # dict parsed from Github Response JSON
Slack API (https://api.slack.com/web):
slack = muffin_apiclient.Plugin(app, name='slack', root_url='https://slack.com/api', defaults={
'headers': {
'Authorization': 'token OAUTH-TOKEN'
}
})
# Update current user status (we don't care about this response)
await client.api['users.profile.set'].post(json={
'profile': {
'status_text': 'working',
'status_emoji': ':computer:'
'status_expiration': 30,
}
}, read_response_body=False)
And etc
Options
Name |
Default value |
Desctiption |
root_url |
None |
Define general root URL for the client |
timeout |
None |
Define client timeout |
backend_type |
httpx |
APIClient backend (httpx|aiohttp) |
backend_options |
{} |
Backend options |
raise_for_status |
True |
Raise errors for HTTP statuses (300+) |
read_response_body |
True |
Read responses |
parse_response_body |
True |
Parse responses (load json, etc) |
client_defaults |
{} |
Default client values (headers, auth, etc) |
You are able to provide the options when you are initiliazing the plugin:
apiclient.setup(app, root_url='https://api.github.com')
Or setup it inside Muffin.Application config using the APICLIENT_ prefix:
APICLIENT_ROOT_URL = 'https://api.github.com'
Muffin.Application configuration options are case insensitive
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-apiclient/issues
Contributing
Development of Muffin-APIClient happens at: https://github.com/klen/muffin-apiclient
Contributors
klen (Kirill Klenov)
License
Licensed under a MIT license.
Project details
Release history Release notifications | RSS feed
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 muffin-apiclient-3.3.0.tar.gz
.
File metadata
- Download URL: muffin-apiclient-3.3.0.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25e151218f5d5766408e7f3b45e35b877d3ae86c23953dfa36c1d6e6b906687d |
|
MD5 | 52ee3a79bcd43c327d2fde5724e7475a |
|
BLAKE2b-256 | 90975a56b0fc50e25e4c8d054f95b39a7c7906a0ea21d32f2d7af8fa4cea8f44 |
File details
Details for the file muffin_apiclient-3.3.0-py3-none-any.whl
.
File metadata
- Download URL: muffin_apiclient-3.3.0-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 090dc41ea7f01d7e7414acfc135d4876df66e5c4112dfb57de8a7b8ffbde7fe5 |
|
MD5 | 5654e861a1b886912407a176e5f2ffb9 |
|
BLAKE2b-256 | d061a37380f84bb0adba146b27969b10532c7aece9874190a58e5ca524ecfbee |