Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
angel-one
GitHub Repository: angel-one/smartapi-python
Path: blob/main/SmartApi/__pycache__/smartConnect.cpython-36.pyc
413 views
3

�|�_E4�@s�ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
jZddl
Z
ddl
mZddlZddlZddlZddlmZmZeje�ZGdd�de�ZdS)�)�urljoinN)�get)�__version__�	__title__c@s�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dd d!d!d"d#d$d%d&d'd(d)d*d+d,d-�Z!dhd0d1�Z"d2d3�Z#d4d5�Z$d6d7�Z%d8d9�Z&d:d;�Z'd<d=�Z(did>d?�Z)djd@dA�Z*dkdBdC�Z+dldDdE�Z,dmdFdG�Z-dHdI�Z.dJdK�Z/dLdM�Z0dNdO�Z1dPdQ�Z2dRdS�Z3dTdU�Z4dVdW�Z5dXdY�Z6dZd[�Z7d\d]�Z8d^d_�Z9d`da�Z:dbdc�Z;ddde�Z<dfdg�Z=d.S)n�SmartConnectz#https://apiconnect.angelbroking.comz1https://smartapi.angelbroking.com/publisher-login�ZMISZCNCZNRMLZCOZBOZMARKET�LIMITzSL-MZSLZregularZbo�coZamo�BUYZSELL�DAYZIOC�NSEZBSEZNFOZCDSZBFOZMCXZNCDEXZCOMPLETEZREJECTEDZ	CANCELLEDz//rest/auth/angelbroking/user/v1/loginByPasswordz(/rest/secure/angelbroking/user/v1/logoutz-/rest/auth/angelbroking/jwt/v1/generateTokensz,/rest/secure/angelbroking/user/v1/getProfilez-/rest/secure/angelbroking/order/v1/placeOrderz./rest/secure/angelbroking/order/v1/modifyOrderz./rest/secure/angelbroking/order/v1/cancelOrderz//rest/secure/angelbroking/order/v1/getOrderBookz-/rest/secure/angelbroking/order/v1/getLtpDataz//rest/secure/angelbroking/order/v1/getTradeBookz(/rest/secure/angelbroking/user/v1/getRMSz1/rest/secure/angelbroking/portfolio/v1/getHoldingz./rest/secure/angelbroking/order/v1/getPositionz2/rest/secure/angelbroking/order/v1/convertPosition)z	api.loginz
api.logoutz	api.tokenzapi.refreshzapi.user.profilezapi.order.placezapi.order.modifyzapi.order.cancelzapi.order.bookzapi.ltp.datazapi.trade.bookz
api.rms.limitzapi.holdingzapi.positionzapi.convert.positionNFcCs�||_||_d|_|
|_||_||_||_|r2|ni|_|p@|j|_	|pL|j
|_|	r�tj
�|_tjjf|	�}|jjd|�td�nt|_tjjj�dS)Nzhttps://zin pool)�debug�api_key�session_expiry_hook�disable_ssl�access_token�
refresh_token�userId�proxies�_rootUrl�root�_default_timeout�timeout�requestsZSessionZ
reqsessionZadaptersZHTTPAdapterZmount�printZpackagesZurllib3Zdisable_warnings)�selfrrrrrr
rrZpoolrZ
reqadapter�r�+C:\smartapi-python\SmartApi\smartConnect.py�__init__Xs"

zSmartConnect.__init__cCst|�std��||_dS)Nz0Invalid input type. Only functions are accepted.)�callable�	TypeErrorr)r�methodrrr�setSessionExpiryHookosz!SmartConnect.setSessionExpiryHookcCstS)N)rrrrr�	getUserIdtszSmartConnect.getUserIdcCs
||_dS)N)r)r�idrrr�	setUserIdwszSmartConnect.setUserIdcCs
||_dS)N)r)rrrrr�setAccessTokenzszSmartConnect.setAccessTokencCs
||_dS)N)r)rrrrr�setRefreshToken~szSmartConnect.setRefreshTokencCsd|j|jfS)zYGet the remote login url to which a user should be redirected to initiate the login flow.z
%s?api_key=%s)�
_login_urlr)rrrr�	login_url�szSmartConnect.login_urlcCsX|r|j�ni}|j|jf|�}t|�t|j|�}t|�tj�}tj|�}t	d�j
}	djtj
ddtj���}
|j}d}d}
d}|||	|
|||
|d�}|jr�|j}d	j|�|d
<|jr�tjdj||||d��yZtj|||d$kr�tj|�nd|d%k�rtj|�nd||jd|j|jd�	}td|j�Wn(tk
�rV}z
|�WYdd}~XnX|j�rxtjdj|j|jd��d|dk�r&ytj|jjd��}Wn*t k
�r�t!j"dj|jd���YnX|j	d��r"|j#�r�|jdk�r�|ddk�r�|j#�t$t!|dt!j%�}||d|jd ��|Sd!|dk�r:|jSt!j"d"j|d|jd#���dS)&zMake an HTTP request.zhttps://api.ipify.org�:z..z%012xzapplication/json�USERZWEB)zContent-typezX-ClientLocalIPzX-ClientPublicIPzX-MACAddressZAcceptzX-PrivateKeyz
X-UserTypez
X-SourceIDz	Bearer {}Z
Authorizationz*Request: {method} {url} {params} {headers})r!�url�params�headers�POST�PUTN�GET�DELETET)�datar-r.ZverifyZallow_redirectsrrzThe Response ContentzResponse: {code} {content})�code�content�jsonzContent-type�utf8zDCouldn't parse the JSON response received from the server: {content})r5Z
error_typei�ZTokenException�message)r4�csvz@Unknown Content-type ({content_type}) with response: ({content}))Zcontent_typer5)r/r0)r1r2)&�copy�_routes�formatrrr�socketZgethostnameZ
gethostbynamer�text�join�reZfindall�uuidZgetnoderrr
�logrZrequestr6�dumpsrrrr5�	ExceptionZstatus_code�loads�decode�
ValueError�exZ
DataExceptionr�getattrZGeneralException)r�router!Z
parametersr-Zurir,ZhostnameZ
clientLocalIPZclientPublicIPZ
macAddressZ
privateKeyZacceptZuserTypeZsourceIDr.Zauth_header�r�er3Zexprrr�_request�st


"zSmartConnect._requestcCs|j|d|�S)z#Alias for sending a DELETE request.r2)rM)rrJr-rrr�_deleteRequest�szSmartConnect._deleteRequestcCs|j|d|�S)z Alias for sending a PUT request.r0)rM)rrJr-rrr�_putRequest�szSmartConnect._putRequestcCs|j|d|�S)z!Alias for sending a POST request.r/)rM)rrJr-rrr�_postRequest�szSmartConnect._postRequestcCs|j|d|�S)z Alias for sending a GET request.r1)rM)rrJr-rrr�_getRequest�szSmartConnect._getRequestc	Cs�||d�}|jd|�}|dd}|j|�|dd}|j|�|j|�}|dd}t|�|j|�d||dd<||dd<td|�|S)	N)�
clientcode�passwordz	api.loginr3�jwtToken�refreshTokenrRzBearer r+)rPr&r'�
getProfilerr%)	r�
clientCoderSr-ZloginResultObjectrTrU�userr$rrr�generateSession�s





zSmartConnect.generateSessioncCs|jdd|i�}|S)Nz
api.logoutrR)rP)rrWZlogoutResponseObjectrrr�terminateSession�szSmartConnect.terminateSessioncCs*|jdd|i�}|dd}|j|�|S)Nz	api.tokenrUr3rT)rPr&)rr�responserTrrr�
generateTokens
zSmartConnect.generateTokencCsP|jd|j|jd��}i}d|kr2|dd|d<|j|d<|dd|d<|S)Nzapi.refresh)rTrUrTr3rRrU)rPrrr)rr[ZtokenSetrrr�renewAccessTokens
zSmartConnect.renewAccessTokencCs|jdd|i�}td|�|S)Nzapi.user.profilerUzUSER PROFILE)rQr)rrUrXrrrrVs
zSmartConnect.getProfilecCsD|}x&t|j��D]}||dkr||=qW|jd|�dd}|S)Nzapi.order.placer3�orderid)�list�keysrP)r�orderparamsr-�k�
orderResponserrr�
placeOrders
zSmartConnect.placeOrdercCs<|}x&t|j��D]}||dkr||=qW|jd|�}|S)Nzapi.order.modify)r_r`rP)rrar-rbrcrrr�modifyOrder+s
zSmartConnect.modifyOrdercCs|jd||d��}|S)Nzapi.order.cancel)�varietyr^)rP)rZorder_idrfrcrrr�cancelOrder7szSmartConnect.cancelOrdercCs|||d�}|jd|�}|S)N)�exchange�
tradingsymbol�symboltokenzapi.ltp.data)rP)rrhrirjr-ZltpDataResponserrr�ltpData;s
zSmartConnect.ltpDatacCs|jd�}|S)Nzapi.order.book)rQ)rZorderBookResponserrr�	orderBookDs
zSmartConnect.orderBookcCs|jd�}|S)Nzapi.trade.book)rQ)rZtradeBookResponserrr�	tradeBookIs
zSmartConnect.tradeBookcCs|jd�}|S)Nz
api.rms.limit)rQ)rZrmsLimitResponserrr�rmsLimitMs
zSmartConnect.rmsLimitcCs|jd�}|S)Nzapi.position)rQ)rZpositionResponserrr�positionQs
zSmartConnect.positioncCs|jd�}|S)Nzapi.holding)rQ)rZholdingResponserrr�holdingUs
zSmartConnect.holdingcCs<|}x&t|j��D]}||dkr||=qW|jd|�}|S)Nzapi.convert.position)r_r`rP)rZpositionParamsr-rbZconvertPositionResponserrr�convertPositionYs
zSmartConnect.convertPositioncCstdj�tS)Nz-python/)r�
capitalizer)rrrr�_user_agentbszSmartConnect._user_agent)
NNNNNFNNNF)N)N)N)N)N)>�__name__�
__module__�__qualname__rr(rZPRODUCT_MISZPRODUCT_CNCZPRODUCT_NRMLZ
PRODUCT_COZ
PRODUCT_BOZORDER_TYPE_MARKETZORDER_TYPE_LIMITZORDER_TYPE_SLMZ
ORDER_TYPE_SLZVARIETY_REGULARZ
VARIETY_BOZ
VARIETY_COZVARIETY_AMOZTRANSACTION_TYPE_BUYZTRANSACTION_TYPE_SELLZVALIDITY_DAYZVALIDITY_IOCZEXCHANGE_NSEZEXCHANGE_BSEZEXCHANGE_NFOZEXCHANGE_CDSZEXCHANGE_BFOZEXCHANGE_MCXZEXCHANGE_NCDEXZSTATUS_COMPLETEZSTATUS_REJECTEDZSTATUS_CANCELLEDr;rr"r#r%r&r'r)rMrNrOrPrQrYrZr\r]rVrdrergrkrlrmrnrorprqrsrrrrrs�

U



		r)Zsix.moves.urllib.parser�sysr9r6Zdateutil.parserZdateutilZhashlibZloggingZdatetimeZsmartapi.smartExceptionsZsmartExceptionsrHrrr@rAr=Zsmartapi.versionrrZ	getLoggerrtrB�objectrrrrr�<module>s