mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-27 20:13:59 +03:00
e0d81c2d28
* Add aiohttp extension module * Add giphynav-aiohttp app * Add missing docstrings * Remove print() call * Remove not needed import from flask extension tests * Improve coroutine provider tests * Add aiohttp extension tests * Update tox.ini * Add aiohttp extras * Try fix Python 3.4 tests * Try fix 3.6 tests * Stop running coroutine tests for Python 3.4 * Rename tests * Remove type hints * Fix pypy and change python version for coverage job to 3.8 * Fix coveralls job * Try fix Python 3.4, 3.5 tests * Make coverage job to run 3.5+ tests * Add tests * Add readme * Update the readmes * Add API docs * Add API docs page * Update changelog
30 lines
838 B
Python
30 lines
838 B
Python
"""Giphy client module."""
|
|
|
|
from aiohttp import ClientSession, ClientTimeout
|
|
|
|
|
|
class GiphyClient:
|
|
|
|
API_URL = 'http://api.giphy.com/v1'
|
|
|
|
def __init__(self, api_key, timeout):
|
|
self._api_key = api_key
|
|
self._timeout = ClientTimeout(timeout)
|
|
|
|
async def search(self, query, limit):
|
|
"""Make search API call and return result."""
|
|
if not query:
|
|
return []
|
|
|
|
url = f'{self.API_URL}/gifs/search'
|
|
params = {
|
|
'q': query,
|
|
'api_key': self._api_key,
|
|
'limit': limit,
|
|
}
|
|
async with ClientSession(timeout=self._timeout) as session:
|
|
async with session.get(url, params=params) as response:
|
|
if response.status != 200:
|
|
response.raise_for_status()
|
|
return await response.json()
|