Source code for goodreads_api_client.client

# -*- coding: utf-8 -*-
"""Module containing client with resources of Goodreads API."""

from goodreads_api_client.exceptions import OauthEndpointNotImplemented
import goodreads_api_client.resources as resources
from goodreads_api_client.transport import Transport


[docs]class Client(object): """Makes API Calls to the Goodreads API <https://goodreads.com/api>.""" def __init__(self, developer_key: str, developer_secret: str=None, base_url: str=None): """Initialize Goodreads API client with credentials. :param str developer_key: Your Goodreads developer key. Find or generate one here <https://goodreads.com/api/keys> :param str developer_secret: Your Goodreads developer secret :param str/None base_url: Base URL of the Goodreads API. Defaults to https://goodreads.com. """ self._transport = Transport(developer_key, developer_secret, base_url) self._load_resources() def _load_resources(self): resource_dict = dict( [(name, cls) for name, cls in resources.__dict__.items() if isinstance(cls, type)]) for resource_name, resource_cls in resource_dict.items(): setattr(self, resource_name, resource_cls(transport=self._transport))
[docs] def authorize(self): self._transport.authorize()
[docs] def auth_user(self): raise OauthEndpointNotImplemented('auth.user')
[docs] def search_author(self, name: str): endpoint = 'api/author_url/{}'.format(name) res = self._transport.req(endpoint=endpoint) return res['author']
[docs] def search_book(self, q: str, field: str='all', page: int=1): endpoint = 'search/index' params = { 'field': field, 'page': page, 'q': q, } res = self._transport.req(endpoint=endpoint, params=params) return res['search']