from serenitas.utils.misc import get_credential_path import json import posixpath from urllib.parse import urljoin import requests def load_api_key(): with get_credential_path("markit_api").open() as fh: creds = json.load(fh) base_url = creds.pop("url") r = requests.post( urljoin(base_url, "apikey"), data=creds, ) return base_url, r.text class MarkitAPI: base_url, api_key = load_api_key() @classmethod def get_data(cls, asset_class, service="latest"): _asset_class_to_markit = {"sn_cds": "CD"} params = { "format": "json", "assetClass": _asset_class_to_markit[asset_class], "apikey": cls.api_key, "limit": 1000, } path = posixpath.join("parsing", "Quote", service) url = urljoin(cls.base_url, path) r = requests.get(url, params) # print(r.status_code, r.text[:100]) return json.loads(r.text)