Source code for btgsolutions_otcmarkets.rest.top_of_book

import requests
import json
import pandas as pd
from typing import Optional
from ..config import BASE_REST_URL
from .authenticator import Authenticator

[docs] class TopOfBook: """ This class provides the Top Of Book for all tickers that have at least 1 placed order. * Main use case: >>> from btgsolutions_otcmarkets import TopOfBook >>> tob = TopOfBook( >>> api_key='YOUR_API_KEY', >>> ) >>> tob.get_top_of_book( >>> ticker='ZTEST01', >>> ) >>> tob.get_top_of_book() Parameters ---------------- api_key: str User identification key. Field is required. """ def __init__( self, api_key: Optional[str] ): self.api_key = api_key self.token = Authenticator(self.api_key).token self.headers = {"authorization": f"Bearer {self.token}"}
[docs] def get_top_of_book( self, ticker: str = None, raw_data: bool = False, ): """ This method provides the Top Of Book for a given ticker. If no ticker is provided, it returns the Top Of Book for all tickers that have at least 1 placed order. Parameters ---------------- ticker: string Asset ticker. Field is required. Example: 'ZTEST01'. raw_data: bool If false, returns data in a dataframe. If true, returns raw data. Field is not required. Default: False. """ if isinstance(ticker, str): single_ticker = True url = f"{BASE_REST_URL}/api/v1/btg-otc-mkts/mktdata/top-book?symbol={ticker}" else: single_ticker = False url = f"{BASE_REST_URL}/api/v1/btg-otc-mkts/mktdata/top-book/all" response = requests.request("GET", url, headers=self.headers) if response.status_code == 200: response_data = json.loads(response.text) if raw_data: return response_data else: if single_ticker: return pd.DataFrame([response_data]) else: return pd.DataFrame(response_data) response = json.loads(response.text) raise Exception(f'Error: {response.get("detail", "")}.')