@@ -65,6 +65,9 @@ class TradeRepublicApi:
65
65
_subscription_id_counter = 1
66
66
_previous_responses = {}
67
67
subscriptions = {}
68
+
69
+ _credentials_file = CREDENTIALS_FILE
70
+ _cookies_file = COOKIES_FILE
68
71
69
72
@property
70
73
def session_token (self ):
@@ -79,21 +82,27 @@ def session_token(self, val):
79
82
self ._session_token_expires_at = time .time () + 290
80
83
self ._session_token = val
81
84
82
- def __init__ (self , phone_no = None , pin = None , keyfile = None , locale = 'de' , save_cookies = False ):
85
+ def __init__ (self , phone_no = None , pin = None , keyfile = None , locale = 'de' , save_cookies = False , credentials_file = None , cookies_file = None ):
83
86
self .log = get_logger (__name__ )
84
87
self ._locale = locale
85
88
self ._save_cookies = save_cookies
89
+
90
+ self ._credentials_file = pathlib .Path (credentials_file ) if credentials_file else CREDENTIALS_FILE
91
+ self ._cookies_file = pathlib .Path (cookies_file ) if cookies_file else COOKIES_FILE
92
+
86
93
if not (phone_no and pin ):
87
94
try :
88
- with open (CREDENTIALS_FILE , 'r' ) as f :
95
+ with open (self . _credentials_file , 'r' ) as f :
89
96
lines = f .readlines ()
90
97
self .phone_no = lines [0 ].strip ()
91
98
self .pin = lines [1 ].strip ()
92
99
except FileNotFoundError :
93
- raise ValueError (f'phone_no and pin must be specified explicitly or via { CREDENTIALS_FILE } ' )
100
+ raise ValueError (f'phone_no and pin must be specified explicitly or via { self . _credentials_file } ' )
94
101
else :
95
102
self .phone_no = phone_no
96
103
self .pin = pin
104
+
105
+
97
106
98
107
self .keyfile = keyfile if keyfile else KEY_FILE
99
108
try :
@@ -105,7 +114,7 @@ def __init__(self, phone_no=None, pin=None, keyfile=None, locale='de', save_cook
105
114
self ._websession = requests .Session ()
106
115
self ._websession .headers = self ._default_headers_web
107
116
if self ._save_cookies :
108
- self ._websession .cookies = MozillaCookieJar (COOKIES_FILE )
117
+ self ._websession .cookies = MozillaCookieJar (self . _cookies_file )
109
118
110
119
def initiate_device_reset (self ):
111
120
self .sk = SigningKey .generate (curve = NIST256p , hashfunc = hashlib .sha512 )
@@ -224,7 +233,7 @@ def resume_websession(self):
224
233
return False
225
234
226
235
# Only attempt to load if the cookie file exists.
227
- if COOKIES_FILE .exists ():
236
+ if self . _cookies_file .exists ():
228
237
# Loads session cookies too (expirydate=0).
229
238
self ._websession .cookies .load (ignore_discard = True , ignore_expires = True )
230
239
self ._weblogin = True
0 commit comments