Esempio n. 1
0
 def video_comments(user_info, video_id):
     if request.method == 'POST':
         result, err = video_service.addCommentToVideo(int(user_info["id"]), video_id, request.json)
         if err:
             return err
         return success_response(201, result)
     else:
         result, err = video_service.getCommentsFromVideo(video_id)
         if err:
             return err
         return success_response(200, result)
Esempio n. 2
0
 def authorize_user(self, token):
     email = get_email(token)
     if email not in self.db:
         return error_response(401, 'Invalid Token')
     user = self.db[email]
     response_data = {'user': get_fields(user)}
     return success_response(200, response_data)
Esempio n. 3
0
    def user_profile(user_info, user_id):
        if request.method == 'GET':
            requester_id = int(user_info["id"])
            app.logger.debug(
                "/users/%s || Requesting AuthServer for user profile", user_id)
            response = users_service.getUserProfile(user_id)
            if response.status_code != 200 or requester_id == user_id:
                return response

            profile_data = json.loads(response.get_data())
            profile_data[
                'friendship_status'] = users_service.getFriendshipStatus(
                    requester_id, user_id)
            return success_response(200, profile_data)
        if request.method == 'PUT':
            requester_id = int(user_info["id"])
            if requester_id != user_id:
                return error_response(403, 'Forbidden')
            return users_service.editUserProfile(user_id, request.get_json())
        if request.method == 'DELETE':
            if user_info != {} and not app.config[
                    'TESTING']:  #It is only allowed to the webadmin to use
                return error_response(403, 'Forbidden')

            # Delete videos
            video_service.removeLikesFromUser(user_id)
            video_service.deleteCommentsFromUser(user_id)
            response = video_service.deleteVideos(user_id)
            return response if response.status_code != 204 else users_service.deleteUserProfile(
                user_id)
Esempio n. 4
0
 def get_user_videos(self, user_id, video_searching):
     response_data = []
     for video_id, video in self.db.items():
         is_private = (video['visibility'] == 'private' and 'visibility' not in video_searching)
         if video['user_id'] == user_id and not is_private:
             response_data.append(get_fields(video_id, video))
     return success_response(200, response_data)
Esempio n. 5
0
 def user_pending_requests(user_info):
     pending_ids = users_service.getPendingRequests(int(user_info["id"]))
     app.logger.debug(
         "/users/my_requests || %d user profiles to fetch from Auth Server",
         len(pending_ids))
     response_data = users_service.fetchUsersNames(pending_ids)
     app.logger.debug("/users/my_requests || Fetched %d user profiles",
                      len(response_data))
     return success_response(200, response_data)
Esempio n. 6
0
 def deleteVideos(self, user_id):
     response = self.listVideosFromUser(user_id)
     if response.status_code != 200:
         return response
     videos_data = json.loads(response.get_data())
     for video in videos_data:
         video_id = video['id']
         response = self.deleteVideo(video_id)
         if response.status_code != 204:
             return response
     return success_response(204, 'Videos deleted successfully')
Esempio n. 7
0
    def login(self, data):
        email = data['email']
        password = data['password']
        if email not in self.db:
            return error_response(401, 'Wrong credentials')
        if not check_password_hash(password, self.db[email]['password']):
            return error_response(401, 'Wrong credentials')

        user = self.db[email]
        response_data = {'token': get_token(email), 'user': get_fields(user)}
        return success_response(200, response_data)
Esempio n. 8
0
 def get_video(user_info, video_id):
     requester_id = int(user_info["id"])
     video, err = video_service.getVideo(requester_id, video_id)
     if err:
         return err
     if request.method == 'GET':
         return success_response(200, video)
     elif request.method == 'PATCH':
         if requester_id != video['user_id']:
             return error_response(403, 'Forbidden')
         return video_service.editVideo(video_id, request.get_json())
     elif request.method == 'DELETE':
         if requester_id != video['user_id']:
             return error_response(403, 'Forbidden')
         return video_service.deleteVideo(video_id)
Esempio n. 9
0
    def user_friends(user_info, user_id):
        if request.method == 'POST':
            response = users_service.getUserProfile(user_id)
            if response.status_code != 200:
                return error_response(404, "Can't befriend inexistent user")

            err = users_service.acceptFriendRequest(int(user_info["id"]),
                                                    user_id)
            if err:
                return error_response(400, err)

            notification_service.friendRequestAccepted(user_info,
                                                       response.get_json())
            return success_response(
                200, {"message": "Friend accepted successfully"})
        else:
            friends_ids = users_service.getFriends(user_id)
            app.logger.debug(
                "/users/%d/friends || %d user profiles to fetch from Auth Server",
                user_id, len(friends_ids))
            response_data = users_service.fetchUsersNames(friends_ids)
            app.logger.debug("/users/%d/friends || Fetched %d user profiles",
                             user_id, len(response_data))
            return success_response(200, response_data)
Esempio n. 10
0
    def user_friend_request(user_info, user_id):
        app.logger.debug(
            "/users/%s/friend_request || Requesting AuthServer for user profile",
            user_id)
        response = users_service.getUserProfile(user_id)
        if response.status_code != 200:
            return error_response(
                404, "Can't send friend request to inexistent user")

        err = users_service.sendFriendRequest(int(user_info['id']), user_id)
        if err:
            return error_response(400, err)

        notification_service.newFriendRequest(user_info, response.get_json())
        return success_response(
            200, {"message": "Friendship request sent successfully"})
Esempio n. 11
0
    def edit_video(self, video_id, data):
        if any(elemen in data for elemen in ['id', 'author', 'user_id', 'url', 'date']):
            return error_response(400, 'Invalid values')

        if not validate_visibility(data['visibility']):
            return error_response(400, 'Invalid visibility')

        if not video_id in self.db:
            return error_response(404, 'Video not found')
        
        video = self.db[video_id]
        for k,v in data.items():
            if k in video:
                video[k] = v
        
        return success_response(200, get_fields(video_id, video))
Esempio n. 12
0
 def oauth_login(self, data):
     if not "_" in data["idToken"]:
         return error_response(400, "Cant verify google credentials")
     email = data["idToken"].split("_")[1]
     if email not in self.db:
         id = self.generate_id()
         username = email.split('@')[0]
         username = "******" + username
         self.db[email] = {
             'id': id,
             'email': email,
             'username': username,
             'profile': {}
         }
     user = self.db[email]
     response_data = {'token': get_token(email), 'user': get_fields(user)}
     return success_response(200, response_data)
Esempio n. 13
0
 def register(self, data):
     email = data["email"]
     username = data['username']
     password = data['password']
     hashed_password = get_hash(password)
     if email in self.db or any(user['username'] == username
                                for user in self.db.values()):
         return error_response(409, 'User already registered')
     if not validate(email):
         return error_response(400, 'Invalid email address')
     id = self.generate_id()
     self.db[email] = {
         'id': id,
         'email': email,
         'password': hashed_password,
         'username': username,
         'profile': {}
     }
     response_data = {'id': id}
     return success_response(200, response_data)
Esempio n. 14
0
    def add_video(self, data):
        url = data['url']
        author = data['author']
        title = data['title']
        visibility = data['visibility']
        user_id = data['user_id']
        description = data['description'] if 'description' in data else ''
        thumb = data['thumb'] if 'thumb' in data else ''
 
        if any(video['url'] == url for video in self.db.values()):
            return error_response(409, 'Video already uploaded')

        date = datetime.strptime(data['date'], '%m/%d/%y %H:%M:%S')
        if date > datetime.now():
            return error_response(400, 'Invalid date')
        if not validate_visibility(data['visibility']):
            return error_response(400, 'Invalid visibility')

        id = self.generate_id()
        self.db[id] = {'author': author, 'title': title, 'description': description, 'date': date, 'visibility': visibility, 
        'url': url, 'thumb': thumb, 'user_id': user_id}
        response_data = {'id': id}
        return success_response(201, response_data)
Esempio n. 15
0
 def home_videos(user_info):
     requester_id = int(user_info["id"])
     friends_ids = users_service.getFriends(requester_id)[:]
     friends_ids.append(requester_id)
     return success_response(200, rule_engine.prioritize_videos(user_info,video_service.listVideos(friends_ids)))
Esempio n. 16
0
 def get_video(self, video_id):
     if not video_id in self.db:
         return error_response(404, 'Video not found')
     video = self.db[video_id]
     response_data = get_fields(video_id, video)
     return success_response(200, response_data)
Esempio n. 17
0
 def get_videos(self):
     response_data = []
     for video_id, video in self.db.items():
         response_data.append(get_fields(video_id, video))
     return success_response(200, response_data)
Esempio n. 18
0
 def video_likes(user_info, video_id):
     err = video_service.addLikeToVideo(int(user_info['id']), video_id, request.json['liked'])
     if err:
         return err
     return success_response(200, {'result':'Like updated'})
Esempio n. 19
0
 def get_users(self):
     response_data = list(
         map(lambda user: get_fields(user), self.db.values()))
     return success_response(200, response_data)
Esempio n. 20
0
 def get_user_profile(self, user_id_request):
     for v in self.db.values():
         if v['id'] == str(user_id_request):
             return success_response(200, get_fields(v))
     return error_response(404, "User not found")
Esempio n. 21
0
 def edit_user_profile(self, user_id, body):
     for v in self.db.values():
         if v['id'] == str(user_id):
             v['profile'] = body
             return success_response(200, get_fields(v))
     return error_response(404, "User not found")