class fmterror(Exception):
pass
-class autherror(Exception):
+class autherror(auth.autherror):
pass
class jsonerror(Exception):
if resolve(fld, ("field",), None) == "userId":
raise autherror(fld["message"])
raise
- if data.get("status") != "USER_SIGN":
- raise fmterror("unexpected bankid status: " + str(data.get("status")))
+ st = 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 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()
return
elif st == "CANCELLED":
raise autherror("authentication cancelled")
+ elif st == "OUTSTANDING_TRANSACTION":
+ raise autherror("another bankid transaction already in progress")
else:
raise fmterror("unexpected bankid status: " + str(st))
+ time.sleep(3)
+ vdat = self._jreq(vfy)
+ st = vdat.get("status")
def keepalive(self):
data = self._jreq("v5/framework/clientsession")
self.logout()
self._req("v5/framework/clientsession", method="DELETE")
+ def __getstate__(self):
+ state = dict(self.__dict__)
+ state["jar"] = list(state["jar"].cookiejar)
+ return state
+
+ def __setstate__(self, state):
+ jar = request.HTTPCookieProcessor()
+ for cookie in state["jar"]:
+ jar.cookiejar.set_cookie(cookie)
+ state["jar"] = jar
+ self.__dict__.update(state)
+
def __enter__(self):
return self