Skip to content

Commit

Permalink
redirection url validation for socket & payload empty & set_access_token
Browse files Browse the repository at this point in the history
  • Loading branch information
JenishSiifl committed Apr 15, 2024
1 parent edef647 commit 9f01782
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
37 changes: 35 additions & 2 deletions py5paisa/py5paisa.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import pandas as pd
import websocket
from .urlconst import *
import jwt

from io import StringIO
from enum import Enum
Expand Down Expand Up @@ -145,6 +146,7 @@ def _user_info_request(self, data_type):
raise Exception("Invalid data type requested")
response = self.session.post(
url, json=payload, headers=HEADERS).json()
self.payload = GENERIC_PAYLOAD

data = response["body"][return_type]
return data
Expand Down Expand Up @@ -273,6 +275,7 @@ def order_request(self, req_type) -> None:
raise Exception("Invalid request type!")
res = self.session.post(url, json=self.payload,
headers=HEADERS).json()
self.payload = GENERIC_PAYLOAD

if req_type == "MS":
log_response(res["head"]["statusDescription"])
Expand Down Expand Up @@ -522,7 +525,10 @@ def Request_Feed(self, Method: str, Operation: str, req_list: list):

def connect(self, wspayload: dict):
try:
self.web_url = f'wss://openfeed.5paisa.com/Feeds/api/chat?Value1={self.Jwt_token}|{self.client_code}'
if self.WEBSOCKET_URL == '':
self.WEBSOCKET_URL=self.decode_token(self.Jwt_token)

self.web_url = f'{self.WEBSOCKET_URL}{self.Jwt_token}|{self.client_code}'

def on_open(ws):
log_response("Streaming Started")
Expand Down Expand Up @@ -738,6 +744,7 @@ def get_access_token(self, request_token=None):
url = ACCESS_TOKEN_ROUTE

res = self.session.post(url, json=self.payload).json()
self.payload = GENERIC_PAYLOAD
message = res["body"]["Message"]

if message == "Success":
Expand All @@ -760,6 +767,7 @@ def get_request_token(self, client_code, totp, pin):
url = GET_REQUEST_TOKEN_ROUTE

res = self.session.post(url, json=self.payload).json()
self.payload = GENERIC_PAYLOAD
message = res["body"]["Status"]

if message == 0:
Expand Down Expand Up @@ -982,4 +990,29 @@ def place_order_bulk(self, **order):
# Handle unknown order_type if needed
pass
except Exception as e:
log_response(e)
log_response(e)

def decode_token(self,token):
try:
decoded = jwt.decode(token, options={"verify_signature": False})
#decoded_token = jwt.decode(token)
url=self.get_feed_url(decoded['RedirectServer'])
return url
except jwt.InvalidTokenError:
print("Invalid token")

def get_feed_url(self,redirect_server):
if redirect_server == "A":
return "wss://aopenfeed.5paisa.com/feeds/api/chat?Value1="
elif redirect_server == "B":
return "wss://bopenfeed.5paisa.com/feeds/api/chat?Value1="
elif redirect_server == "C":
return "wss://openfeed.5paisa.com/feeds/api/chat?Value1="
else:
return "wss://openfeed.5paisa.com/Feeds/api/chat?Value1="


def set_access_token(self,accessToken,clientCode):
self.access_token=accessToken
self.client_code=clientCode
self.Jwt_token = self.access_token
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"idna>=2.9",
"loguru>=0.5.1",
"websocket-client>=0.58.0",
"pandas>=1.2.4"
"pandas>=1.2.4",
"pyjwt==2.3.0",
]

setup_requirements = []
Expand Down

0 comments on commit 9f01782

Please sign in to comment.