diff --git a/wykop/__init__.py b/wykop/__init__.py index 23bad69..7aa1477 100644 --- a/wykop/__init__.py +++ b/wykop/__init__.py @@ -1,3 +1,4 @@ +"""Python library for the Wykop API.""" from wykop.api.clients import WykopAPI from wykop.api.exceptions import WykopAPIError from wykop.utils import get_version diff --git a/wykop/api/clients.py b/wykop/api/clients.py index 488a8f2..48bea10 100644 --- a/wykop/api/clients.py +++ b/wykop/api/clients.py @@ -1,3 +1,4 @@ +"""Wykop API clients module.""" import base64 import hashlib import logging @@ -23,7 +24,7 @@ class BaseWykopAPI(object): """ - Base Wykop API class + Base Wykop API. """ _client_name = 'wykop-sdk' @@ -149,14 +150,19 @@ def get_headers(self, url, **post_params): 'User-Agent': user_agent, } - def request(self, rtype, rmethod, rmethod_params=[], - api_params={}, post_params={}, file_params={}, + def request(self, rtype, rmethod, rmethod_params=None, + api_params=None, post_params=None, file_params=None, parser=default_parser, requester=default_requester): """ Makes request. """ log.debug('Making request') + rmethod_params = rmethod_params or [] + api_params = api_params or {} + post_params = post_params or {} + file_params = file_params or {} + # sanitize data rtype = force_text(rtype) rmethod = force_text(rmethod) @@ -177,7 +183,7 @@ def request(self, rtype, rmethod, rmethod_params=[], class WykopAPI(BaseWykopAPI): """ - Wykop API class + Wykop API version 1. """ def __init__(self, appkey, secretkey, login=None, accountkey=None, @@ -507,8 +513,8 @@ def search_entries(self, q, page=1): api_params=api_params, post_params=post_params) - def search_profiles(self, q): - post_params = {'q': q} + def search_profiles(self, query): + post_params = {'q': query} return self.request('search', 'entries', post_params=post_params) @@ -574,7 +580,7 @@ def add_entry(self, body, embed=None, channel=None): @login_required def edit_entry(self, entry_id, body): post_params = {'body': body} - return self.request('entries', 'edit', + return self.request('entries', 'edit', [entry_id], post_params=post_params) @login_required diff --git a/wykop/api/decorators.py b/wykop/api/decorators.py index b6778f2..44a7c58 100644 --- a/wykop/api/decorators.py +++ b/wykop/api/decorators.py @@ -1,3 +1,4 @@ +"""Wykop API decorators module.""" from wykop.api.exceptions import InvalidUserKeyError diff --git a/wykop/api/exceptions/base.py b/wykop/api/exceptions/base.py index 214e880..638733c 100644 --- a/wykop/api/exceptions/base.py +++ b/wykop/api/exceptions/base.py @@ -1,3 +1,4 @@ +"""Wykop API base exceptions module.""" __all__ = [ 'InvalidAPIKeyError', 'InvalidParamsError', 'NotEnoughParamsError', 'AppWritePermissionsError', 'DailtyRequestLimitError', @@ -13,9 +14,7 @@ class WykopAPIError(Exception): - """ - Base Wykop API exception class - """ + """Base Wykop API exception.""" pass class InvalidAPIKeyError(WykopAPIError): diff --git a/wykop/api/exceptions/resolvers.py b/wykop/api/exceptions/resolvers.py index 7489631..c24a0d7 100644 --- a/wykop/api/exceptions/resolvers.py +++ b/wykop/api/exceptions/resolvers.py @@ -1,9 +1,11 @@ +"""Wykop API exceptions resolver module.""" import sys from wykop.utils import force_bytes class ExceptionResolver(object): + """Wykop API exception resolver.""" def __init__(self, exceptions): self.exceptions = exceptions diff --git a/wykop/models.py b/wykop/api/models.py similarity index 53% rename from wykop/models.py rename to wykop/api/models.py index f60495f..718c4b2 100644 --- a/wykop/models.py +++ b/wykop/api/models.py @@ -1,3 +1,4 @@ -class AttrDict(dict): +"""Wykop API models module..""" +class WykopAPIResponse(dict): __getattr__ = dict.__getitem__ __setattr__ = dict.__setitem__ diff --git a/wykop/api/parsers/__init__.py b/wykop/api/parsers/__init__.py index 969617c..f967acc 100644 --- a/wykop/api/parsers/__init__.py +++ b/wykop/api/parsers/__init__.py @@ -1,6 +1,9 @@ +"""Wykop API parsers module.""" from wykop.api.exceptions import default_exception_resolver from wykop.api.parsers.json import JSONParser -from wykop.models import AttrDict +from wykop.api.models import WykopAPIResponse default_parser = JSONParser( - default_exception_resolver, object_hook=lambda x: AttrDict(x)) + default_exception_resolver, + object_hook=WykopAPIResponse, +) diff --git a/wykop/api/parsers/base.py b/wykop/api/parsers/base.py index f8f6b8d..316fa63 100644 --- a/wykop/api/parsers/base.py +++ b/wykop/api/parsers/base.py @@ -1,3 +1,4 @@ +"""Wykop API base praser module.""" from collections import namedtuple from wykop.api.exceptions import WykopAPIError diff --git a/wykop/api/parsers/json.py b/wykop/api/parsers/json.py index 2799f09..a92aada 100644 --- a/wykop/api/parsers/json.py +++ b/wykop/api/parsers/json.py @@ -1,3 +1,4 @@ +"""Wykop API JSON praser module.""" from __future__ import absolute_import try: import simplejson as json diff --git a/wykop/api/requesters/base.py b/wykop/api/requesters/base.py index 0c131c6..67940dc 100644 --- a/wykop/api/requesters/base.py +++ b/wykop/api/requesters/base.py @@ -1,4 +1,6 @@ +"""Wykop API base requester module.""" class BaseRequester(object): + """Base Wykop API reqeuster""" def make_request(self, url, data=None, headers=None, files=None): raise NotImplementedError( diff --git a/wykop/api/requesters/requests.py b/wykop/api/requesters/requests.py index 92f674e..bc0a7a3 100644 --- a/wykop/api/requesters/requests.py +++ b/wykop/api/requesters/requests.py @@ -1,3 +1,4 @@ +"""Wykop API requests requester module.""" from __future__ import absolute_import import logging @@ -13,23 +14,25 @@ class RequestsRequester(BaseRequester): """ - Requests requester class + Requests Wtkop API requester. Uses reqeusts module. """ METHOD_GET = 'GET' METHOD_POST = 'POST' def make_request(self, url, data=None, headers=None, files=None): - log.debug(" Fetching url: `%s` (data: %s, headers: `%s`)" % - (str(url), str(data), str(headers))) + log.debug( + " Fetching url: `%s` (data: %s, headers: `%s`)", + str(url), str(data), str(headers), + ) try: files = self._get_files(files) method = self._get_method(data, files) resp = request(method, url, data=data, headers=headers, files=files) resp.raise_for_status() return force_text(resp.content) - except RequestException as e: - raise WykopAPIError(0, str(e)) + except RequestException as ex: + raise WykopAPIError(0, str(ex)) def _get_files(self, files): return dictmap(lambda x: (x.name, x, mimetype(x.name)), files) diff --git a/wykop/api/requesters/urllib.py b/wykop/api/requesters/urllib.py index 5f2ca8c..cbecd83 100644 --- a/wykop/api/requesters/urllib.py +++ b/wykop/api/requesters/urllib.py @@ -1,3 +1,4 @@ +"""wykop API urllib requester module.""" import contextlib import logging @@ -14,12 +15,14 @@ class UrllibRequester(BaseRequester): """ - Urllib requester class + Urllib Wykop API requester. Uses urllib module. """ def make_request(self, url, data=None, headers=None, files=None): - log.debug(" Fetching url: `%s` (data: %s, headers: `%s`)" % - (str(url), str(data), str(headers))) + log.debug( + " Fetching url: `%s` (data: %s, headers: `%s`)", + str(url), str(data), str(headers), + ) if files: raise NotImplementedError( @@ -32,9 +35,9 @@ def make_request(self, url, data=None, headers=None, files=None): req = Request(url, data=data_bytes, headers=headers) try: - with contextlib.closing(urlopen(req)) as f: - return force_text(f.read()) - except HTTPError as e: - raise WykopAPIError(0, str(e.code)) - except URLError as e: - raise WykopAPIError(0, str(e.reason)) + with contextlib.closing(urlopen(req)) as resp: + return force_text(resp.read()) + except HTTPError as ex: + raise WykopAPIError(0, str(ex.code)) + except URLError as ex: + raise WykopAPIError(0, str(ex.reason)) diff --git a/wykop/utils.py b/wykop/utils.py index e61fdee..7840f8b 100644 --- a/wykop/utils.py +++ b/wykop/utils.py @@ -1,3 +1,4 @@ +"""Wykop utils module.""" import mimetypes from pkg_resources import get_distribution, DistributionNotFound