def _register_user(self, uaid, router_type, router_data): # type: (uuid.UUID, str, JSONDict) -> None """Save a new user record""" self.db.router.register_user(dict( uaid=uaid.hex, router_type=router_type, router_data=router_data, connected_at=ms_time(), last_connect=generate_last_connect(), ))
def _router_completed(self, response, uaid_data, warning="", router_type=None, vapid=None): """Called after router has completed successfully""" # Log the time taken for routing self._timings["route_time"] = time.time() - self._router_time # Were we told to update the router data? time_diff = time.time() - self._start_time if response.router_data is not None: if not response.router_data: # An empty router_data object indicates that the record should # be deleted. There is no longer valid route information for # this record. self.log.debug(format="Dropping User", code=100, uaid_hash=hasher(uaid_data["uaid"]), uaid_record=dump_uaid(uaid_data), client_info=self._client_info) d = deferToThread(self.db.router.drop_user, uaid_data["uaid"]) d.addCallback(lambda x: self._router_response(response)) return d # The router data needs to be updated to include any changes # requested by the bridge system uaid_data["router_data"] = response.router_data # set the AWS mandatory data uaid_data["connected_at"] = ms_time() d = deferToThread(self.db.router.register_user, uaid_data) response.router_data = None d.addCallback(lambda x: self._router_completed( response, uaid_data, warning, router_type, vapid)) return d else: # No changes are requested by the bridge system, proceed as normal dest = 'Direct' if response.status_code == 200 or response.logged_status == 200: self.log.debug(format="Successful delivery", client_info=self._client_info) elif response.status_code == 202 or response.logged_status == 202: self.log.debug(format="Router miss, message stored.", client_info=self._client_info) dest = 'Stored' self.metrics.timing("notification.request_time", duration=time_diff) self.metrics.increment('notification.message.success', tags=make_tags(destination=dest, router=router_type, vapid=(vapid is not None))) response.response_body = (response.response_body + " " + warning).strip() self._router_response(response)
def _register_user(self, uaid, router_type, router_data): # type: (uuid.UUID, str, JSONDict) -> None """Save a new user record We set the expiry to 0 here because mobile users never check back, so the record may be incorrectly expired. (Expiry records older than 5 years are not automatically deleted.) """ self.db.router.register_user( dict(uaid=uaid.hex, router_type=router_type, router_data=router_data, connected_at=ms_time(), last_connect=generate_last_connect(), expiry=0))