From 702b77c5a1e846913ced4b58c9f26573c629e9bf Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont (@ardumont)" <antoine.romain.dumont@gmail.com> Date: Thu, 26 Jan 2017 14:13:30 +0100 Subject: [PATCH] Refactor: Unify redundant behavior in SWHRemoteAPI Related T646 --- swh/vault/api/client.py | 54 +++-------------------------------------- 1 file changed, 4 insertions(+), 50 deletions(-) diff --git a/swh/vault/api/client.py b/swh/vault/api/client.py index 03a2097..a8bfb5b 100644 --- a/swh/vault/api/client.py +++ b/swh/vault/api/client.py @@ -1,64 +1,18 @@ -# Copyright (C) 2016 The Software Heritage developers +# Copyright (C) 2016-2017 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -import pickle -import requests - from swh.core import hashutil +from swh.core.api import SWHRemoteAPI from swh.storage.exc import StorageAPIError -from swh.objstorage.api.common import (decode_response, - encode_data_client as encode_data) -class RemoteVaultCache(): +class RemoteVaultCache(SWHRemoteAPI): """Client to the Software Heritage vault cache.""" def __init__(self, base_url): - self.base_url = base_url if base_url.endswith('/') else base_url + '/' - self.session = requests.Session() - - def url(self, endpoint): - return'%s%s' % (self.base_url, endpoint) - - def post(self, endpoint, data): - try: - response = self.session.post( - self.url(endpoint), - data=encode_data(data), - headers={'content-type': 'application/x-msgpack'}, - ) - except ConnectionError as e: - print(str(e)) - raise StorageAPIError(e) - - # XXX: this breaks language-independence and should be - # replaced by proper unserialization - if response.status_code == 400: - raise pickle.loads(decode_response(response)) - - return decode_response(response) - - def get(self, endpoint, data=None): - try: - response = self.session.get( - self.url(endpoint), - params=data, - ) - except ConnectionError as e: - print(str(e)) - raise StorageAPIError(e) - - if response.status_code == 404: - return None - - # XXX: this breaks language-independence and should be - # replaced by proper unserialization - if response.status_code == 400: - raise pickle.loads(decode_response(response)) - else: - return decode_response(response) + super().__init__(api_exception=StorageAPIError, url=base_url) def directory_ls(self): return self.get('vault/directory/') -- GitLab