http.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:GridLight-Server 作者: Lunabit 项目源码 文件源码
def __init__(self, app_token: str, timestamp: float, data=None):
        """ Initialize a request given an app token, a request-sent timestamp, and additional data
        provided from the caller. App token and timestamp validation will be performed.

        Parameters
        ----------
        app_token : str
            Allows ability to validate that request is from a valid caller.
        timestamp : float
            When the the original request was sent, used for ensuring requests are recent.
        data : dict, optional
            Additional information supplied by the caller.

        """
        if not data:
            data = {}

        # App Token provided with the request.
        if not app_token:
            raise InvalidRequestError('No app token.')
        if not validate_app_token(app_token):
            raise InvalidRequestError('Invalid app token.')
        self.app_token = app_token

        # Set request timestamp.
        timestamp = floor_unix_epoch(timestamp)
        time_limit = floor_unix_epoch(time.time() - EXPIRATION_SECONDS)

        if time_limit > timestamp:
            raise InvalidRequestError('Request expired.')
        self.timestamp = timestamp

        # Authentication details.
        user_token = data.get("user_token")
        email = data.get("email")

        if user_token:
            try:
                if validate_user_token(user_token):
                    self.user_token = user_token
            except (NoResultFound, MultipleResultsFound) as e:
                raise InvalidRequestError('Invalid user token: {}'.\
                                          format(str(e)))

            try:
                self.user = user_from_attribute('token', user_token)
            except (NoResultFound, MultipleResultsFound):
                self.user = None
        elif email:
            if "@" not in email:
                raise InvalidRequestError('Invalid e-mail address.')
            self.email = email
            try:
                self.user = user_from_attribute('email', email)
            except (NoResultFound, MultipleResultsFound):
                self.user = None
        else:
            raise InvalidRequestError('No authentication provided.')

        # Extra data provided with the request.
        self.data = data
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号