예제 #1
0
def fconnect():
    '''
            Api for login using Facebook Authentications.
    '''
    # loading code
    data = json.loads(request.data)
    access_token = data['authResponse']['accessToken']
    provider_id = data['id']

    # Avoid duplicated login
    stored_access_token = login_session.get('access_token')
    stored_provider_id = login_session.get('provider_id')

    if stored_access_token is not None and provider_id == stored_provider_id:
        return utilities.status(login_session.get('message'), 200, 'json')

    # Storing access token
    login_session['access_token'] = access_token
    # Check if the user exist
    user = models.select_user_by_email(data['email'])
    if user is None:
        user = models.insert_new_user(data['name'], data[
                                      'email'], data['picture']['data']['url'].strip('/'))

    login_session['provider_id'] = provider_id
    login_session['email'] = data['email']
    login_session['message'] = {'picture': data['picture']['data']['url'].strip('/'), 'email': data[
        'email'], 'fullname': data['name'], 'id': user.id, 'provider': 'facebook'}

    return utilities.status(login_session.get('message'), 200, 'json')
예제 #2
0
def gconnect():
    '''
            Api for login using Goople Authentications.
    '''
    # loading code
    code = request.data
    try:
        oauth_flow = flow_from_clientsecrets('client_secret.json', scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        return utilities.status('Failed to upgrade the authorization code',
                                401, 'json')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(404)

    access_token = credentials.access_token
    provider_id = credentials.id_token['sub']

    # Avoid duplicated login
    stored_access_token = login_session.get('access_token')
    stored_provider_id = login_session.get('provider_id')

    if stored_access_token is not None and provider_id == stored_provider_id:
        return utilities.status(login_session.get('message'), 200, 'json')

    # Storing access token
    login_session['access_token'] = access_token

    # Retrive user info for user
    userinfo_url = 'https://www.googleapis.com/oauth2/v2/userinfo'
    answer = requests.get(userinfo_url,
                          headers={'Authorization': 'Bearer ' + access_token})

    data = json.loads(answer.text)
    # Check if the user exist
    user = models.select_user_by_email(data['email'])

    if user is None:
        user = models.insert_new_user(data['name'], data['email'],
                                      data['picture'].strip('/'))
    login_session['provider_id'] = provider_id
    login_session['email'] = data['email']
    login_session['message'] = {
        'picture': data['picture'].strip('/'),
        'email': data['email'],
        'fullname': data['name'],
        'id': user.id,
        'provider': 'google'
    }

    return utilities.status(login_session.get('message'), 200, 'json')
예제 #3
0
def gconnect():
    '''
            Api for login using Goople Authentications.
    '''
    # loading code
    code = request.data
    try:
        oauth_flow = flow_from_clientsecrets(
            'client_secret.json', scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        return utilities.status('Failed to upgrade the authorization code', 401, 'json')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(404)

    access_token = credentials.access_token
    provider_id = credentials.id_token['sub']

    # Avoid duplicated login
    stored_access_token = login_session.get('access_token')
    stored_provider_id = login_session.get('provider_id')

    if stored_access_token is not None and provider_id == stored_provider_id:
        return utilities.status(login_session.get('message'), 200, 'json')

    # Storing access token
    login_session['access_token'] = access_token

    # Retrive user info for user
    userinfo_url = 'https://www.googleapis.com/oauth2/v2/userinfo'
    answer = requests.get(userinfo_url, headers={
                          'Authorization': 'Bearer ' + access_token})

    data = json.loads(answer.text)
    # Check if the user exist
    user = models.select_user_by_email(data['email'])

    if user is None:
        user = models.insert_new_user(data['name'], data[
                                      'email'], data['picture'].strip('/'))
    login_session['provider_id'] = provider_id
    login_session['email'] = data['email']
    login_session['message'] = {'picture': data['picture'].strip('/'), 'email': data[
        'email'], 'fullname': data['name'], 'id': user.id, 'provider': 'google'}

    return utilities.status(login_session.get('message'), 200, 'json')
예제 #4
0
def itemModel(category_id=None, user_id=None):
    try:
        items = None
        if (category_id is None and user_id is None):
            items = models.select_all_items()
        elif (category_id is not None and user_id is None):
            items = models.select_items_by_category(category_id)
        elif (category_id is None and user_id is not None):
            items = models.select_items_by_user_id(user_id)
        else:
            items = models.select_items_by_user_id_and_category_id(
                user_id, category_id)

        if items is None:
            abort(403)
        else:
            return utilities.status(
                utilities.convert_list_to_xml('items', [
                    utilities.convert_object_to_xml('item', r.serialize)
                    for r in items
                ]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #5
0
def addItem():
    # Loadind user information
    user_id = models.select_user_by_email(login_session.get('email')).id
    # Loading data from request
    data = json.loads(request.data)
    models.insert_new_item(user_id, data["title"], data["description"], data[
                           "category_id"], data["image_id"])
    return utilities.status('Successfully inserted', 200, 'json')
예제 #6
0
def editItem(item_id):
    item = models.select_item_by_id(item_id)

    # Loading data from request
    data = json.loads(request.data)
    models.update_item(item, data["title"], data["description"], data[
                       "image_id"], data["category_id"])
    return utilities.status('Successfully updated', 200, 'json')
예제 #7
0
def fdisconnect():
    '''
            Facebook oauth server side logout api
    '''
    access_token = login_session.get('access_token')

    if access_token is None:
        return utilities.status("Current user not connected", 401, 'json')
    return disconnect(requests.codes.ok)
예제 #8
0
def fdisconnect():
    '''
            Facebook oauth server side logout api
    '''
    access_token = login_session.get('access_token')

    if access_token is None:
        return utilities.status("Current user not connected", 401, 'json')
    return disconnect(requests.codes.ok)
예제 #9
0
def disconnect(result):
    '''
            Single method remove all related information to disconnect.
    '''
    if result == requests.codes.ok:
        del login_session['access_token']
        del login_session['email']
        del login_session['message']
        del login_session['provider_id']

    return utilities.status('Successfully disconnected', 200, 'json')
예제 #10
0
def gdisconnect():
    '''
            Google oauth server side logout api
    '''
    access_token = login_session.get('access_token')
    if access_token is None:
        return utilities.status("Current user not connected", 401, 'json')
    result = requests.get(
        'https://accounts.google.com/o/oauth2/revoke?token=%s' % access_token)

    return disconnect(result.status_code)
예제 #11
0
def disconnect(result):
    '''
            Single method remove all related information to disconnect.
    '''
    if result == requests.codes.ok:
        del login_session['access_token']
        del login_session['email']
        del login_session['message']
        del login_session['provider_id']

    return utilities.status('Successfully disconnected', 200, 'json')
예제 #12
0
def gdisconnect():
    '''
            Google oauth server side logout api
    '''
    access_token = login_session.get('access_token')
    if access_token is None:
        return utilities.status("Current user not connected", 401, 'json')
    result = requests.get(
        'https://accounts.google.com/o/oauth2/revoke?token=%s' % access_token)

    return disconnect(result.status_code)
예제 #13
0
def imageModel(id):
    try:
        image = models.select_image_by_id(id)
        if image is None:
            abort(403)
        else:
            print image.serialize
            return utilities.status(utilities.convert_object_to_xml('image', image.serialize), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #14
0
def categoryModel():
    try:
        categories = models.load_categories()
        if categories is None:
            abort(403)
        else:
            return utilities.status(utilities.convert_list_to_xml('categories',
                                                                  [utilities.convert_object_to_xml('category',
                                                                                                   r.serialize) for r in categories]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #15
0
def imageModel(id):
    try:
        image = models.select_image_by_id(id)
        if image is None:
            abort(403)
        else:
            print image.serialize
            return utilities.status(
                utilities.convert_object_to_xml('image', image.serialize), 200,
                'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #16
0
def categoryModel():
    try:
        categories = models.load_categories()
        if categories is None:
            abort(403)
        else:
            return utilities.status(
                utilities.convert_list_to_xml('categories', [
                    utilities.convert_object_to_xml('category', r.serialize)
                    for r in categories
                ]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #17
0
def fconnect():
    '''
            Api for login using Facebook Authentications.
    '''
    # loading code
    data = json.loads(request.data)
    access_token = data['authResponse']['accessToken']
    provider_id = data['id']

    # Avoid duplicated login
    stored_access_token = login_session.get('access_token')
    stored_provider_id = login_session.get('provider_id')

    if stored_access_token is not None and provider_id == stored_provider_id:
        return utilities.status(login_session.get('message'), 200, 'json')

    # Storing access token
    login_session['access_token'] = access_token
    # Check if the user exist
    user = models.select_user_by_email(data['email'])
    if user is None:
        user = models.insert_new_user(
            data['name'], data['email'],
            data['picture']['data']['url'].strip('/'))

    login_session['provider_id'] = provider_id
    login_session['email'] = data['email']
    login_session['message'] = {
        'picture': data['picture']['data']['url'].strip('/'),
        'email': data['email'],
        'fullname': data['name'],
        'id': user.id,
        'provider': 'facebook'
    }

    return utilities.status(login_session.get('message'), 200, 'json')
예제 #18
0
def imagesModel(category_id=None):
    try:
        images = None
        if (category_id is None):
            images = models.load_all_images()
        else:
            images = models.load_all_images_by_category(category_id)

        if images is None:
            abort(403)
        else:
            return utilities.status(utilities.convert_list_to_xml('images',
                                                                  [utilities.convert_object_to_xml('image',
                                                                                                   r.serialize) for r in images]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #19
0
def imagesModel(category_id=None):
    try:
        images = None
        if (category_id is None):
            images = models.load_all_images()
        else:
            images = models.load_all_images_by_category(category_id)

        if images is None:
            abort(403)
        else:
            return utilities.status(
                utilities.convert_list_to_xml('images', [
                    utilities.convert_object_to_xml('image', r.serialize)
                    for r in images
                ]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #20
0
def itemModel(category_id=None, user_id=None):
    try:
        items = None
        if (category_id is None and user_id is None):
            items = models.select_all_items()
        elif (category_id is not None and user_id is None):
            items = models.select_items_by_category(category_id)
        elif (category_id is None and user_id is not None):
            items = models.select_items_by_user_id(user_id)
        else:
            items = models.select_items_by_user_id_and_category_id(
                user_id, category_id)

        if items is None:
            abort(403)
        else:
            return utilities.status(utilities.convert_list_to_xml('items',
                                                                  [utilities.convert_object_to_xml('item',
                                                                                                   r.serialize) for r in items]), 200, 'xml')
    except:
        print "Unexpected error:", sys.exc_info()[0]
        print "Unexpected error:", sys.exc_info()[1]
        abort(403)
예제 #21
0
def deleteItem(item_id):
    itemToDelete = models.select_item_by_id(item_id)
    models.delete_item(itemToDelete)
    return utilities.status('Successfully deleted', 200, 'json')