class FriendsResource(Resource): def __init__(self): self.user_repository = UserRepository() super(FriendsResource, self).__init__() @authenticate def get(self, **kwargs): graph = facebook.GraphAPI(access_token=kwargs['token']) friends = graph.get_connections( kwargs['user'].facebook_id, "friends")['data'] users = [] for friend in friends: user = query(self.user_repository.get( facebook_id=friend['id'])).single_or_default(default=None) if user: users.append(user) return users
def post(self): user_repository = UserRepository() auth_repository = UserAuthorizationRepository() args = self.auth_parser.parse_args() token = args['token'] uid = args['user_id'] graph = facebook.GraphAPI(access_token=token) user = graph.get_object("me", fields="email,first_name,last_name") if 'email' not in user: on_invalid_auth( "The provided key does not have email permissions. Obtain a key with extended email permissions" ) if user and user['id'] == uid: if not user_repository.user_exists(user['email']): new_user = User(uid, user['first_name'], user[ 'last_name'], user['email']) user_repository.add_or_update(new_user) user_repository.save_changes() users = user_repository.get(email=user['email']) user = users[0] if users else None if user: user.facebook_id = uid user_repository.add_or_update(user) user_repository.save_changes() auth_repository.insert_authorization(token, user.id) auth_repository.save_changes() else: on_server_error("Unknown error adding user") return True else: on_invalid_auth()