From 5a740f62af50d1d26ee1378a139ff70437ccc243 Mon Sep 17 00:00:00 2001 From: "William David Mayo (\"Dave\")" Date: Wed, 17 Jan 2018 20:58:07 -0500 Subject: [PATCH] WIP, authorize and get wrapper --- .gitignore | 1 + asnake/__init__.py | 30 ++++++++++++++++++++++++++++++ setup.py | 9 +++++++++ 3 files changed, 40 insertions(+) create mode 100644 .gitignore create mode 100644 asnake/__init__.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/asnake/__init__.py b/asnake/__init__.py new file mode 100644 index 0000000..39e4d70 --- /dev/null +++ b/asnake/__init__.py @@ -0,0 +1,30 @@ +from requests import Session +from urllib.parse import urljoin, quote +import json + +class ASnakeAuthError(Exception): pass + +class ASnakeClient(): + '''ArchivesSnake Client''' + + def __init__(self, **config): + self.__dict__.update(config) + if not hasattr(self, 'session'): self.session = Session() + self.session.headers.update({'Accept': 'application/json', + 'User-Agent': 'ArchivesSnake/0.1'}) + + + def authorize(self, username, password): + resp = self.session.post( + urljoin(self.baseurl, f'users/{quote(username)}/login'), + params={"password": password, "expiring": False} + ) + + if resp.status_code != 200: + raise ASnakeAuthError("Failed to authorize ASnake") + else: + self.session.headers['X-ArchivesSpace-Session'] = json.loads(resp.text)['session'] + return True + + def get(self, url, *args, **kwargs): + return self.session.get(urljoin(self.baseurl, url), *args, **kwargs) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..9710118 --- /dev/null +++ b/setup.py @@ -0,0 +1,9 @@ +from setuptools import setup, find_packages + +setup( + name="ArchivesSnake", + version="0.1", + packages=find_packages(), + zip_safe=False, + install_requires=["requests"] +)