Skip to main content

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

Tests Status PYPI Version Python Versions

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muffin-apiclient-3.1.1.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

muffin_apiclient-3.1.1-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file muffin-apiclient-3.1.1.tar.gz.

File metadata

  • Download URL: muffin-apiclient-3.1.1.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

Hashes for muffin-apiclient-3.1.1.tar.gz
Algorithm Hash digest
SHA256 115d8c0148c43e756f6e63858f2b6d081f58f620bc34e8c2193b81150ba60a88
MD5 09080d78512ab2e86f4b667638a85b79
BLAKE2b-256 dd1eedcbc887730d19a4dfdc3e3e2620744ecbac058f40aaf80a40796b33de17

See more details on using hashes here.

File details

Details for the file muffin_apiclient-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: muffin_apiclient-3.1.1-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

Hashes for muffin_apiclient-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a2119e95f63cb8b3261daceb8ff49803faf989ee46d07cc431d9fe33e84d9f4c
MD5 8bcffb1d3d247c697d1ac2aebe58d6a7
BLAKE2b-256 778dcdb76bec5f7b7c4c169e6c76e164f875b7c47d398445d314a88662ceb900

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page