From 23cf67136fcb80bcbdbe0755ca99af1a736419a3 Mon Sep 17 00:00:00 2001 From: wolfy1339 Date: Mon, 8 Oct 2018 23:40:45 -0400 Subject: [PATCH] Update to latest API and follow JS library --- codebottle/__init__.py | 3 +- codebottle/auth.py | 12 ------- codebottle/client.py | 77 ++++++++++++++-------------------------- codebottle/exceptions.py | 3 -- codebottle/helpers.py | 4 +++ 5 files changed, 32 insertions(+), 67 deletions(-) delete mode 100644 codebottle/auth.py delete mode 100644 codebottle/exceptions.py create mode 100644 codebottle/helpers.py diff --git a/codebottle/__init__.py b/codebottle/__init__.py index 61c91ec..421945b 100644 --- a/codebottle/__init__.py +++ b/codebottle/__init__.py @@ -1,2 +1 @@ -from .client import CodeBottle -from .exceptions import CodebottleError +from .client import * diff --git a/codebottle/auth.py b/codebottle/auth.py deleted file mode 100644 index d8f5a61..0000000 --- a/codebottle/auth.py +++ /dev/null @@ -1,12 +0,0 @@ -from requests.auth import AuthBase - - -class Token(AuthBase): - - def __init__(self, token): - self.token = token - - def __call__(self, r): - if self.token: - r.headers['Authorization'] = 'Bearer {0}'.format(self.token) - return r diff --git a/codebottle/client.py b/codebottle/client.py index 076da24..44ae41e 100644 --- a/codebottle/client.py +++ b/codebottle/client.py @@ -1,66 +1,43 @@ import requests +import helpers -from .exceptions import CodebottleError -from .auth import Token +headers = { + 'Accept': 'application/vnd.codebottle.v1+json' +} +def _get(url, params=None): + try: + req = requests.get(url, headers=headers, params=params) + return req + except Exception as e: + raise e -class Result(object): - '''A class with attributes of a codebottle API result''' - def __init__(self, r): - self.json = r.json() - if self.json.get('error'): - raise CodebottleError(self.json['error']) +def search(keywords, language): + return _get(helpers.apiUrl('/snippets'), params={ + keywords: keywords, + language: language + }).json() - for k, v in self.json.items(): - setattr(self, k, v) +def get(id): + return _get(helpers.apiUrl('/snippets/'.format(id))) -class CodeBottle(object): - def __init__(self, token=None): - self.api_url = 'https://api.codebottle.io' - self.api_accept = 'application/vnd.codebottle.v1+json' - self.token = token - self.snippets = self.Snippets(self) +def getLatest(): + return _get(helpers.apiUrl('/snippets/new')) - def _build_url(self, endpoint, *args): - url = '{0}/{1}'.format(self.api_url, endpoint) - if len(args) > 0: - args = [str(a) for a in args] - url = '{0}/{1}'.format(url, '/'.join(args)) - return url - def _get(self, endpoint, *args, **kwargs): - url = self._build_url(endpoint, *args) - r = requests.get(url, params=kwargs, auth=Token(self.token), - headers={'Accept': self.api_accept}) - return Result(r) +def getCategories() { + return _get(helpers.apiUrl('/categories')) - def _post(self, endpoint, *args, **kwargs): - url = self._build_url(endpoint, *args) - r = requests.post(url, data=kwargs, auth=Token(self.token), - headers={'Accept': self.api_accept}) - return Result(r) - def languages(self, *args): - return self._get('languages', *args) +def getCategory(id): + return _get(helpers.apiUrl('/categories/{0}'.format(id))) - def categories(self, *args): - return self._get('categories', *args) - class Snippets(object): +def getLanguages(): + return _get(helpers.apiUrl('/languages')) - def __init__(self, parent): - self.parent = parent - def get(self, *args, **kwargs): - return self.parent._get('snippets', *args, **kwargs) - - def new(self): - return self.get('new') - - def create(self, **kwargs): - return self.parent._post('snippets', **kwargs) - - def vote(self, *args, **kwargs): - return self.parent._post('snippets', *args, **kwargs) +def getLanguage(id): + return _get(helpers.apiUrl('/languages/{0}'.format(id))) diff --git a/codebottle/exceptions.py b/codebottle/exceptions.py deleted file mode 100644 index c902ffa..0000000 --- a/codebottle/exceptions.py +++ /dev/null @@ -1,3 +0,0 @@ -class CodebottleError(Exception): - '''Exception to represent a error sent from the API''' - pass diff --git a/codebottle/helpers.py b/codebottle/helpers.py new file mode 100644 index 0000000..342427a --- /dev/null +++ b/codebottle/helpers.py @@ -0,0 +1,4 @@ +apiBase = 'https://api.codebottle.io/'; + +def apiUrl(url): + return apiBase + (url[1:] if url.find('/') == 0 else url)