Ejemplo n.º 1
0
    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,
        }