import json, http.cookiejar, binascii, time, datetime, pickle, hashlib
from urllib import request, parse
from bs4 import BeautifulSoup as soup
-from . import currency
+from . import currency, auth
soupify = lambda cont: soup(cont, "html.parser")
apibase = "https://online.swedbank.se/TDE_DAP_Portal_REST_WEB/api/"
@property
def fullnumber(self): return resolve(self.data, ("fullyFormattedNumber",))
@property
+ def balance(self): return currency.currency.get(resolve(self.data, ("balance", "currencyCode"))).parse(resolve(self.data, ("balance", "amount")))
+ @property
def name(self): return resolve(self._idata, ("name",))
def transactions(self):
rolesw = linkurl(resolve(prof["banks"][0], ("privateProfile", "links", "next", "uri")))
self._jreq(rolesw, method="POST")
- def auth_bankid(self, user):
+ def auth_bankid(self, user, conv=None):
+ if conv is None:
+ conv = auth.default()
data = self._jreq("v5/identification/bankid/mobile", data = {
"userId": user,
"useEasyLogin": False,
if data.get("status") != "USER_SIGN":
raise fmterror("unexpected bankid status: " + str(data.get("status")))
vfy = linkurl(resolve(data, ("links", "next", "uri")))
+ fst = None
while True:
time.sleep(3)
vdat = self._jreq(vfy)
st = vdat.get("status")
- if st == "USER_SIGN":
- continue
- elif st == "CLIENT_NOT_STARTED":
+ if st in {"USER_SIGN", "CLIENT_NOT_STARTED"}:
+ if st != fst:
+ conv.message("Status: %s" % (st,), auth.conv.msg_info)
+ fst = st
continue
elif st == "COMPLETE":
self._postlogin()
@classmethod
def load(cls, filename):
with open(filename, "rb") as fp:
- return picke.load(fp)
+ return pickle.load(fp)