diff options
Diffstat (limited to 'python/api_quotes/api.py')
| -rw-r--r-- | python/api_quotes/api.py | 45 |
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)) |
