Source code for bandl.angel_broking

import requests
import json
import socket

from bandl.request import RequestUrl

#default params for url connection
DEFAULT_TIMEOUT = 5 # seconds
MAX_RETRIES = 2

[docs]class AngelUrl: def __init__(self,api_key): self._BASE_URL = "https://apiconnect.angelbroking.com" hostname = socket.gethostname() client_local_ip = socket.gethostbyname(hostname) client_public_ip = RequestUrl().get('https://api.ipify.org').text self.routes = { "login":"/rest/auth/angelbroking/user/v1/loginByPassword" } self.LOGIN_HEADERS = { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-UserType': 'USER', 'X-SourceID': 'WEB', 'X-ClientLocalIP': client_local_ip, 'X-ClientPublicIP': client_public_ip , 'X-MACAddress': '00:00:00:00:00:00', 'X-PrivateKey': api_key }
[docs] def get_url(self,type): return self._BASE_URL + self.routes.get(type,None)
[docs]class AngelBroking: def __init__(self,user_id,password,api_key,timeout=DEFAULT_TIMEOUT,max_retries=MAX_RETRIES): #internal initialization self.__request = RequestUrl(timeout,max_retries) self.urls = AngelUrl(api_key) request_body = { "clientcode": user_id, "password": password, } #lets login res = self.__request.post(self.urls.get_url("login"), data=json.dumps(request_body), headers = self.urls.LOGIN_HEADERS) self.__login_res = json.loads(res.text) self.__feed_token = self.__login_res.get("data").get("feedToken",None)