Example #1
0
File: Api.py Project: Wanket/RnD-py
        def message_socket(ws: WebSocket, connection: Connection) -> None:
            if Api.__COOKIE_SESSION_NAME not in session:
                ws.close()

                return

            db_session = connection.session()

            for post in db_session.query(Post).all():
                ws.send(
                    Message(datetime=floor(post.datetime.timestamp()),
                            author=post.author,
                            text=post.message).serialize())

            with MessageSubscribersQueue.subscribe(request, ws):
                ws.receive()
Example #2
0
File: Api.py Project: Wanket/RnD-py
        def authorization(
                user: User,
                connection: Connection) -> Union[Response, Serializable]:
            if len(user.name) > 150:
                return Response(status=HTTPStatus.BAD_REQUEST)

            db_session = connection.session()

            db_user = db_session.query(DB_User).filter(
                DB_User.user_name == user.name).first()

            if db_user is None or db_user.password != PasswordHasher.get_hash(
                    db_user.salt, user.password):
                return Result(StatusCode.InvalidUsernameOrPassword.name)

            session[Api.__COOKIE_SESSION_NAME] = UserIdPrincipal(user.name)

            return Result(StatusCode.Success.name)
Example #3
0
File: Api.py Project: Wanket/RnD-py
        def send_message(
                message: MessageToSend,
                connection: Connection) -> Union[Response, Serializable]:
            if len(message.text) > 280:
                return Response(status=HTTPStatus.BAD_REQUEST)

            post = Post(datetime=datetime.utcnow(),
                        author=session[Api.__COOKIE_SESSION_NAME]["name"],
                        message=message.text)

            db_session = connection.session()
            db_session.add(post)

            MessageSubscribersQueue.send_to_subscribers(
                Message(floor(post.datetime.timestamp()), post.author,
                        post.message))

            db_session.commit()

            return Result(StatusCode.Success.value)