diff --git a/README.md b/README.md index 0bf1b15a..030c7672 100644 --- a/README.md +++ b/README.md @@ -43,23 +43,34 @@ except Exception as e: raise e correlation_id = "abcde" +# Method 1: login api using password. data = smartApi.generateSession(username, pwd, totp) -if data['status'] == False: - logger.error(data) +if data.get('status', False): + logger.info(f"Your login data: {data}") -else: - # login api call - # logger.info(f"You Credentials: {data}") + # To get authToken/jwtToken. authToken = data['data']['jwtToken'] + # To get refreshToken. refreshToken = data['data']['refreshToken'] - # fetch the feedtoken + # To get the feedtoken. feedToken = smartApi.getfeedToken() - # fetch User Profile - res = smartApi.getProfile(refreshToken) + +else: + # Error msg if can't able to login with password(pin). + logger.error(data) + + # Method 2: To login or generate authToken/jwtToken using RefreshToken. + refreshToken = "Your refresh token from last login" smartApi.generateToken(refreshToken) - res=res['data']['exchanges'] +# fetch User Profile +res = smartApi.getProfile() + +if not res.get('status'): + logger.error(f"Can't login check your credentials: {res}.") + +else: #place order try: orderparams = { @@ -127,7 +138,7 @@ else: logger.exception(f"Historic Api failed: {e}") #logout try: - logout=smartApi.terminateSession('Your Client Id') + logout=smartApi.terminateSession() logger.info("Logout Successfull") except Exception as e: logger.exception(f"Logout failed: {e}") diff --git a/SmartApi/smartConnect.py b/SmartApi/smartConnect.py index f0cfa863..75741c76 100644 --- a/SmartApi/smartConnect.py +++ b/SmartApi/smartConnect.py @@ -160,8 +160,8 @@ def setSessionExpiryHook(self, method): raise TypeError("Invalid input type. Only functions are accepted.") self.session_expiry_hook = method - def getUserId(): - return userId + def getUserId(self): + return self.userId def setUserId(self,id): self.userId=id @@ -270,7 +270,7 @@ def generateSession(self,clientCode,password,totp): params={"clientcode":clientCode,"password":password,"totp":totp} loginResultObject=self._postRequest("api.login",params) - if loginResultObject['status']==True: + if loginResultObject.get('status')==True: jwtToken=loginResultObject['data']['jwtToken'] self.setAccessToken(jwtToken) refreshToken = loginResultObject['data']['refreshToken'] @@ -290,8 +290,8 @@ def generateSession(self,clientCode,password,totp): else: return loginResultObject - def terminateSession(self,clientCode): - logoutResponseObject=self._postRequest("api.logout",{"clientcode":clientCode}) + def terminateSession(self): + logoutResponseObject=self._postRequest("api.logout",{"clientcode":self.userId}) return logoutResponseObject def generateToken(self,refresh_token): @@ -319,8 +319,8 @@ def renewAccessToken(self): return tokenSet - def getProfile(self,refreshToken): - user=self._getRequest("api.user.profile",{"refreshToken":refreshToken}) + def getProfile(self): + user=self._getRequest("api.user.profile") return user def placeOrder(self,orderparams):