Exemplo n.º 1
0
class UserFriendsView(HTTPMethodView):
    user_repository = UserRepository(MySQLConnection)
    user_service = UserService(user_repository)

    friend_repository = FriendRepository(MySQLConnection)
    friend_service = FriendService(friend_repository)

    @doc.summary('Get friends of user')
    @doc.produces({'friends': [Friend]}, description='Friends of user')
    async def get(self, request, username: str):
        user = await self.user_service.get(username)
        return json(
            {'friends': await self.friend_service.get_all(user['seq'])})

    @doc.summary('Create friend relationship of ')
    @doc.consumes(FriendCreation,
                  content_type='application/json',
                  location='body',
                  required=True)
    async def post(self, request, username: str):
        user = await self.user_service.get(username)
        if user['seq'] != request.json['user_id']:
            abort(403)

        await self.friend_service.create(request.json)
class UserFriendRequestDetailView(HTTPMethodView):
    user_repository = UserRepository(MySQLConnection)
    user_service = UserService(user_repository)

    friend_request_repository = FriendRequestRepository(MySQLConnection)
    friend_request_service = FriendRequestService(friend_request_repository)

    @doc.summary('Get friend request')
    @doc.produces({'request': FriendRequest},
                  description='Request for the friend_request_id',
                  content_type='application/json')
    async def get(self, request, username: str, friend_request_id: int):
        user = await self.user_service.get(username)
        friend_request = await self.friend_request_service.get(
            friend_request_id)

        if user['seq'] != friend_request_id['recipient']:
            abort(403)

        return json({'request': friend_request})

    @doc.summary('Delete the friend request')
    async def delete(self, request, username: str, friend_request_id: int):
        user = await self.user_service.get(username)
        friend_request = await self.friend_request_service.get(
            friend_request_id)

        if user['seq'] != friend_request['recipient']:
            abort(403)

        await self.friend_request_service.delete(friend_request_id)
class UserFriendRequestView(HTTPMethodView):
    user_repository = UserRepository(MySQLConnection)
    user_service = UserService(user_repository)

    friend_request_repository = FriendRequestRepository(MySQLConnection)
    friend_request_service = FriendRequestService(friend_request_repository)

    @doc.summary('Get friend requests to the user')
    @doc.produces({'requests': [FriendRequest]},
                  description='Requests to the user',
                  content_type='application/json')
    async def get(self, request, username: str):
        user = await self.user_service.get(username)
        return json({
            'requests':
            await self.friend_request_service.get_all(user['seq'])
        })

    @doc.summary('Create friend request')
    @doc.consumes(FriendRequestCreation,
                  location='body',
                  content_type='application/json')
    async def post(self, request, username: str):
        user = await self.user_service.get(username)
        if user['seq'] != request.json['sender']:
            abort(403)

        await self.friend_request_service.create(request.json)
Exemplo n.º 4
0
class UserInformationView(HTTPMethodView):
    repository = UserRepository(MySQLConnection)
    service = UserService(repository)

    @doc.summary('Get user information')
    @doc.produces(User, description='User of the username', content_type='application/json')
    async def get(self, request, username: str):
        user = await self.service.get(username)
        del user['seq']
        del user['user_id']
        return json(user)
class UserSignupView(HTTPMethodView):
    repository = UserRepository(MySQLConnection)
    service = UserService(repository)

    @doc.summary('Register account')
    @doc.consumes(
        UserRegistration,
        location='body',
        content_type='application/json',
        required=True)
    @doc.produces({'success': bool}, description='the result of account registration', content_type='application/json')
    async def post(self, request: Request):
        await self.service.create(request.json)
        return json({
            'success': True
        })
    class UserFieldGetterView(HTTPMethodView):
        repository = UserRepository(MySQLConnection)
        service = UserService(repository)

        field_name: str = getter_field
        field_type: type = getter_field_type

        @doc.summary(f'Get {field_name} of user')
        @doc.produces({getter_field: getter_field_type},
                      content_type='application/json',
                      description=f'The value of {getter_field} field')
        async def get(self, request, username: str):
            field_name = self.field_name
            if field_name not in self.repository.patchable_fields:
                abort(404)
            user = await self.service.get(username)
            return json({field_name: user[field_name]})
class UserSigninView(HTTPMethodView):
    repository = UserRepository(MySQLConnection)
    service = UserService(repository)

    @doc.summary('Authenticate account')
    @doc.consumes(UserAuthentication,
                  location='body',
                  content_type='application/json',
                  required=True)
    @doc.produces({'success': bool},
                  description='the result of account authentication',
                  content_type='application/json')
    async def post(self, request: Request):
        user = await self.service.get(request.json['username'])
        return json({
            'success':
            check_password_hash(user['password'], (request.json['password']))
        })
Exemplo n.º 8
0
def start_service():
    service = Service()
    add_post_service = AddPostService(service)
    remove_post_service = RemovePostService(service)
    feed_service = FeedService(service)
    category_service = CategoryService(service)
    vote_service = VoteService(service)
    comment_service = CommentService(service)
    user_service = UserService(service)
    user_liked_post_service = UserLikedPostService(service)
    email_validation_service = EmailValidationService(service)

    app = falcon.API(middleware=[HandleCORS()])
    app.add_route('/add_post_to_category', add_post_service)
    app.add_route('/remove_post_from_category', remove_post_service)
    app.add_route('/feed', feed_service)
    app.add_route('/category', category_service)
    app.add_route('/vote', vote_service)
    app.add_route('/comment', comment_service)
    app.add_route('/user', user_service)
    app.add_route('/user_liked_post', user_liked_post_service)
    app.add_route('/email_validation', email_validation_service)
    return app
Exemplo n.º 9
0
    class UserPatchView(HTTPMethodView):
        repository = UserRepository(MySQLConnection)
        service = UserService(repository)

        field_name: str = patch_field
        field_type: type = patch_field_type

        @doc.summary(f'Get {field_name} of user')
        @doc.produces({patch_field: patch_field_type},
                      content_type='application/json',
                      description=f'The value of {patch_field} field')
        async def get(self, request, username: str):
            field_name = self.field_name
            if field_name not in self.repository.patchable_fields:
                abort(404)
            user = await self.service.get(username)
            return json({field_name: user[field_name]})

        @doc.summary(f'Patch {field_name} of user')
        @doc.consumes({'patch_data': {
            patch_field: patch_field_type
        }},
                      location="body",
                      content_type='application/json')
        @doc.produces({'success': bool},
                      description='Result of the patch',
                      content_type='application/json')
        async def put(self, request, username: str):
            field_name = self.field_name
            if field_name not in self.service.patchable_fields:
                abort(403)
            user = await self.service.get(username)
            await self.repository.patch(
                username,
                {field_name: user[field_name] + request.json[field_name]})
            return json({'success': True})
Exemplo n.º 10
0
 def __init__(self):
     self.user_service = UserService()
Exemplo n.º 11
0
def edit_user():
    payload = request.json
    user_svc = UserService()
    user_svc.update(current_identity.id, payload)
    return {'code': HTTPStatus.OK}
Exemplo n.º 12
0
def register():
    payload = request.json
    user_svc = UserService()

    user_svc.create(payload)
    return {'code': HTTPStatus.CREATED}
Exemplo n.º 13
0
class UserBaseResource(BaseResource):
    user_service = UserService()
    task_service = TaskService()
    user_serializer = UserSerializer()
Exemplo n.º 14
0
def user_login():
    s = UserService()
    s.login()
    return s.render()
Exemplo n.º 15
0
def user_info():
    s = UserService()
    s.get_info()
    return s.render()
Exemplo n.º 16
0
 def __init__(self, user_id: int) -> None:
     self.user_svc = UserService()
     self.user_id = user_id
     cur_validators = self.user_svc.get_all_validators(user_id)
     self.indices = [validator.indice for validator in cur_validators]