aboutsummaryrefslogtreecommitdiffstats
path: root/python/api_quotes/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/api_quotes/api.py')
-rw-r--r--python/api_quotes/api.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/python/api_quotes/api.py b/python/api_quotes/api.py
new file mode 100644
index 00000000..af479d67
--- /dev/null
+++ b/python/api_quotes/api.py
@@ -0,0 +1,45 @@
+from serenitas.utils.misc import get_credential_path
+import json
+import posixpath
+from urllib.parse import urljoin
+from typing import ClassVar
+import requests
+import pandas as pd
+
+
+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
+
+
+def lowercase_keys(d):
+ return {k.lower(): v for k, v in d.items()}
+
+
+class MarkitAPI:
+ base_url, api_key = load_api_key()
+
+ @classmethod
+ def get_data(cls, asset_class, after=None, service="latest"):
+ params = {
+ "format": "json",
+ "assetClass": asset_class,
+ "apikey": cls.api_key,
+ "limit": 1000,
+ "sortBy": "receivedDateTime",
+ "descending": "true",
+ "dateformat": "MILLISECONDSSINCEEPOCH",
+ }
+ if after:
+ params["after"] = after
+ print(params)
+ path = posixpath.join("parsing", "Quote", service)
+ url = urljoin(cls.base_url, path)
+ r = requests.get(url, params)
+ return map(lowercase_keys, json.loads(r.text))