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')
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')
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')
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)
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')
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')
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)
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')
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)
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)
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)
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)
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)
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')
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)
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)
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)
def deleteItem(item_id): itemToDelete = models.select_item_by_id(item_id) models.delete_item(itemToDelete) return utilities.status('Successfully deleted', 200, 'json')