diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-23 23:49:09 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-24 15:21:58 -0700 |
commit | 3f567f5347281602d433e4f3cf4876956afd0588 (patch) | |
tree | 7428bcb3b24b483093becc1c37945ccaee105119 /python/fatcat/api_client.py | |
parent | 63db335123d8dde1c4e701668c07805094ff88e8 (diff) | |
download | fatcat-3f567f5347281602d433e4f3cf4876956afd0588.tar.gz fatcat-3f567f5347281602d433e4f3cf4876956afd0588.zip |
python hacks to work with rustx-attic-python-rust-hacks
... and sort of trying to fix tests, but gave up for now.
Diffstat (limited to 'python/fatcat/api_client.py')
-rw-r--r-- | python/fatcat/api_client.py | 88 |
1 files changed, 51 insertions, 37 deletions
diff --git a/python/fatcat/api_client.py b/python/fatcat/api_client.py index f2fd6a1d..6497e977 100644 --- a/python/fatcat/api_client.py +++ b/python/fatcat/api_client.py @@ -12,19 +12,28 @@ class FatCatApiClient: self._issn_map = dict() def get(self, path, data=None): - headers = {"content-type": "application/json"} - return self.session.get(self.host_url + path, json=data, + headers = {"Content-Type": "application/json"} + rv = self.session.get(self.host_url + path, params=data, headers=headers) + #if rv.status_code not in [200, 201]: + # print(rv) + # print(rv.content) + return rv def post(self, path, data=None): - headers = {"content-type": "application/json"} - return self.session.post(self.host_url + path, json=data, + headers = {"Content-Type": "application/json"} + rv = self.session.post(self.host_url + path, json=data, headers=headers) + if rv.status_code not in [200, 201]: + #print(rv) + #print(rv.content) + pass + return rv def new_editgroup(self): rv = self.post('/v0/editgroup', data=dict( - editor=1)) - assert rv.status_code == 200 + editor_id=1)) + assert rv.status_code in [200, 201] editgroup_id = rv.json()['id'] return editgroup_id @@ -39,8 +48,8 @@ class FatCatApiClient: return self._issn_map[issn] rv = self.get('/v0/container/lookup', data=dict(issn=issn)) container_id = None - if rv.status_code == 200: - container_id = rv.json()['id'] + if rv.status_code in [200, 201]: + container_id = rv.json().get('ident', rv.json().get('id')) else: # only other valid response is a 404; otherwise we had an error assert rv.status_code == 404 @@ -50,24 +59,28 @@ class FatCatApiClient: def import_crossref_file(self, json_file, create_containers=False, batchsize=100): eg = self.new_editgroup() i = 0 - with open(json_file, 'r') as file: - for line in file: - if i % batchsize == 0: - sys.stdout.write('\n{}: '.format(i)) - if (i+1) % 20 == 0: - sys.stdout.write('.') - i = i + 1 - obj = json.loads(line) - if not ("author" in obj and "title" in obj): - continue - try: - self.import_crossref_dict(obj, editgroup=eg, - create_containers=create_containers) - except Exception as e: - print("ERROR: {}".format(e)) - if i % batchsize == 0: - self.accept_editgroup(eg) - eg = self.new_editgroup() + if json_file == "-": + stream = sys.stdin + else: + stream = open(json_file, 'r') + for line in stream: + if i % batchsize == 0: + sys.stdout.write('\n{}: '.format(i)) + if (i+1) % 20 == 0: + sys.stdout.write('.') + i = i + 1 + obj = json.loads(line) + if not ("author" in obj and "title" in obj): + continue + try: + self.import_crossref_dict(obj, editgroup=eg, + create_containers=create_containers) + except Exception as e: + print("CROSSREF IMPORT ERROR: {}".format(e)) + #raise e + if i % batchsize == 0: + self.accept_editgroup(eg) + eg = self.new_editgroup() if i % batchsize != 0: self.accept_editgroup(eg) print("done!") @@ -89,7 +102,7 @@ class FatCatApiClient: container = dict( issn=issn, name=meta['container-title'][0], - container=container_id, + container_id=container_id, #sortname=meta['short-container-title'][0]) publisher=meta['publisher']) @@ -97,10 +110,10 @@ class FatCatApiClient: rv = self.post('/v0/container', data=dict( issn=container['issn'], publisher=container['publisher'])) - assert rv.status_code == 200 - container_id = rv.json()['id'] + assert rv.status_code in [200, 201] + container_id = rv.json().get('ident', rv.json().get('id')) print("created container: {}".format(issn)) - container['id'] = container_id + container['ident'] = container_id self._issn_map[issn] = container_id # references @@ -116,9 +129,10 @@ class FatCatApiClient: # work and release title = meta['title'][0] rv = self.post('/v0/work', - data=dict(title=title, editgroup=editgroup)) #work_type="book" - assert rv.status_code == 200 - work_id = rv.json()['id'] + data=dict(title=title, editgroup_id=editgroup)) #work_type="book" + assert rv.status_code in [200, 201] + #print(rv.json()) + work_id = rv.json().get('ident', rv.json().get('id')) extra = dict(crossref={ 'links': meta.get('link', []), @@ -128,7 +142,7 @@ class FatCatApiClient: rv = self.post('/v0/release', data=dict( title=title, - work=work_id, + work_id=work_id, # XXX: creators=creators, # XXX: refs=refs, # XXX: container=container_id, @@ -139,10 +153,10 @@ class FatCatApiClient: issue=meta.get('issue', None), volume=meta.get('volume', None), pages=meta.get('page', None), - editgroup=editgroup, + editgroup_id=editgroup, extra=extra)) - assert rv.status_code == 200 - release_id = rv.json()['id'] + assert rv.status_code in [200, 201] + release_id = rv.json().get('ident', rv.json().get('id')) def import_issn_file(self, json_file, create_containers=False, batchsize=100): eg = self.new_editgroup() |