def _process(self, request): db = self._application.db storage = self._application.storage datetime = self._application.datetime c_hash = self._application.hash random = self._application.random settings = self._application.settings gift_threshold = settings[Constant.SETTING_FREEBIE_GIFT_THRESHOLD] freebie_unit = settings[Constant.SETTING_SHARE_FREEBIE_UNIT] if self.__account is None: self.__account = Account( alias=self.__account_alias, uuid=self.__account_uuid, ) db.session.add(self.__account) elif (len(self.__account.sessions) % gift_threshold) == 0: self.__account.freebie += freebie_unit storage.push( self.__account.uuid, f''' Thank you for keeping using our service We're glad to present you little bonus {freebie_unit} freebie for you ''', ) else: storage.delete(self.__account.uuid) alias = self.__account.alias token = c_hash.hex( c_hash.NORMAL_DIGEST, datetime.timestamp(), random.salt(), self.__user_digest, self.__user_device, self.__user_agent, self.__user_ip, self.__integrity, ) session = Session( user_device=Device[self.__user_device], user_digest=self.__user_digest, user_agent=self.__user_agent, user_ip=self.__user_ip, token=token, ) session.account = self.__account db.session.commit() return { 'alias': alias, 'token': token, }