(20241223) Trading Symbols Listing Started (Zerodha Kite).

This commit is contained in:
2024-12-23 12:42:27 +05:30
parent 1249841b05
commit 903a586cfe
14 changed files with 721 additions and 10 deletions
@@ -36,6 +36,7 @@ sys.path.append(".")
sys.path.append("..")
# My async utils:
from utils_v2.database.async_mysql_v2 import AsyncMySQL
from utils_v2.database.async_mongo_v2 import AsyncMongo
from utils_v2.cache.async_redis_cache_v2 import AsyncRedisCache
@@ -44,6 +45,7 @@ from controllers_v2.finstitutions.trading.base import TradingController
# Models:
from models.core.auth_token import CoreAuthTokenModel
from models.api.finstitutions.trading.symbols.list import TradingSymbolListRequestData, TradingSymbolListBrokerResponse
# To work with datatypes:
from typing import List, Any
@@ -131,7 +133,58 @@ class AllTradingController(TradingController):
# ┣┫┓┏╋┣┓
# ┛┗┗┻┗┛┗
pass
@staticmethod
async def get_authorization_url(
**kwargs
) -> str:
"""
To generate an authorization URL for this broker.
:param kwargs: Any no. of things needed by your broker to generate the URL.
:return: The authorization URL.
"""
raise NotImplementedError
async def handle_authorization_callback(
self,
sql_conn: AsyncMySQL,
mongo_data_conn: AsyncMongo,
inbound_data: dict
) -> bool:
"""
When the end user interacts with their broker's APIs, the broker's servers would usually issue a callback.
We've seen this in the case of Zerodha Kite and ICICI Breeze. Use this method to handle the callback loop to
complete the authorization.
:param sql_conn: The database connection to use to perform this activity.
:param mongo_data_conn: The database connection to use to perform this activity.
:param inbound_data: The data that came in from the broker. This could be in the JSON body, query params, etc.
:return: True if the callback loop was completed successfully, else False.
"""
raise NotImplementedError
# ┏┳┓ ┓• ┏┓ ┓ ┓
# ┃ ┏┓┏┓┏┫┓┏┓┏┓ ┗┓┓┏┏┳┓┣┓┏┓┃┏
# ┻ ┛ ┗┻┗┻┗┛┗┗┫ ┗┛┗┫┛┗┗┗┛┗┛┗┛
# ┛ ┛
async def list_symbols(
self,
mongo_data_conn: AsyncMongo,
auth_token: CoreAuthTokenModel,
inbound_data: TradingSymbolListRequestData
) -> TradingSymbolListBrokerResponse:
"""
To get the list of tradeable symbols offered by a broker.
:param mongo_data_conn: The database connection to use to perform this activity.
:param auth_token: The token that has to be used to fetch the data.
:param inbound_data: The data that came in with the APi call.
:return: The structured response form the broker.
"""
raise NotImplementedError
# *****************************************************************************************************************