Source code for acdh_handle_pyutils.client

"""Main module."""
import json
import requests


[docs]class HandleClient(): def __init__( self, hdl_user, hdl_pw, hdl_provider="http://pid.gwdg.de/handles/", hdl_prefix="21.11115", hdl_resolver="https://hdl.handle.net/" ): """ initializes the class :param hdl_user: handle-username, e.g. 'user12.12345-06' :type hdl_user: str :param hdl_user: handle-password, e.g. 'verysecret' :type hdl_user: str :param hdl_provider: the base url of your handle-provider :type hdl_provider: str :param hdl_prefix: the prefix of you institution :type hdl_prefix: str :param hdl_resolver: An URL resolving your handle-id :type hdl_resolver: str :return: A HandleClient instance :rtype: `client.HandleClient` """ self.user = hdl_user self.pw = hdl_pw self.provider = hdl_provider self.prefix = hdl_prefix if hdl_resolver.endswith('/'): self.resolver = hdl_resolver else: self.resolver = f"{hdl_resolver}/" if f"{self.provider}{hdl_prefix}".endswith('/'): self.url = f"{self.provider}{self.prefix}" else: self.url = f"{self.provider}{self.prefix}/" self.json_header = { 'Accept': 'application/json', 'Content-Type': 'application/json' } self.auth = (self.user, self.pw)
[docs] def register_handle(self, parsed_data, full_url=True): """ registers an handle-id for the passed in URL aka 'parsed_data' :param parsed_data: An URL to register a HANDLE-ID for :type parsed_data: str :return: The created HANDLE-ID :rtype: str """ payload = json.dumps([{ "type": "URL", "parsed_data": parsed_data }]) response = requests.request( "POST", self.url, headers=self.json_header, data=payload, auth=self.auth ) handle = response.json()['epic-pid'] if full_url: return f"{self.resolver}{handle}" else: return handle