def api_friend_set_photo(friend_id: int): friend = Friend.find_by_id(friend_id) if friend is None: return jsonify({'error': {'message': 'friend not exists'}}), 404 if is_access_denied(friend.profile_id): return jsonify({'error': {'message': 'forbidden'}}), 403 data = request.get_json() if not isinstance(data, dict): return jsonify({'error': {'message': 'invalid input'}}), 400 image = data.get('image', None) if not isinstance(image, dict): return jsonify({'error': {'message': 'invalid input'}}), 400 image_data = image.get('data', None) image_type = image.get('type', None) #print("PUT: ", image_data) #print("PUT: image_data size: ", len(image_data)) #image_data = bytes(image_data, "utf-8") #print("PUT: ", image_data) error = friend.set_photo(image_data, image_type) #print("{}: {}".format(image_type, image_data)) return '', 204
def api_friend_get(friend_id: int): friend = Friend.find_by_id(friend_id) if friend is None: return jsonify({'error': {'message': 'friend not found'}}), 404 output = {'friend_id': friend_id} output.update(friend.get_fields()) return jsonify(output), 200
def FriendMake(friendName, imgFilePath, image, g): ''' This function makes a Friend() given just a friendName, imageName, and an image. Inputs: friendName - the name of the friend, an identifier. imgFilePath - the full path to the file image, just so we can record it. image - the image data itself. g - Our global constants. ''' #Make the Photo: photo=Photo(g) #Make it so we don't save this in the database. make_transient(photo) #Add the image data and compute descriptors: photo.set_binary(image,'myType') #Make a profile: profile=Profile('*****@*****.**', 'password', {'phone': '555-555-5555', 'use_phone': False, 'use_msg': False}) #Make it so we don't save this in the database. make_transient(profile) friend=Friend(profile, {'name' : friendName, 'breed' : imgFilePath, 'sex' : 'Male', 'location' : 'Minneapolis', 'staus' : 'alive' }, g) make_transient(friend) #Update our photo: friend.photo=photo return friend
def profile_photo(friend_id: int): friend = Friend.find_by_id(friend_id) if friend is None: return 'Not found', 404, {'Content-Type': 'text/plain; charset=utf-8'} data, type = friend.photo.get_binary() if not data or not type: return 'Not found', 404, {'Content-Type': 'text/plain; charset=utf-8'} return data, 200, {'Content-Type': type}
def api_friend_delete(friend_id: int): friend = Friend.find_by_id(friend_id) if friend is None: return jsonify({'error': {'message': 'friend not found'}}), 404 if is_access_denied(friend.profile_id): return jsonify({'error': {'message': 'forbidden'}}), 403 db.session.delete(friend) db.session.commit() return '', 204
def api_profile_friends_get(profile_id: int): """ @return list of friends for profile """ if is_access_denied(profile_id): return jsonify({'error': {'message': 'forbidden'}}), 403 friends = Friend.find_by_profile_id(profile_id) if friends is None: return jsonify({'error': {'message': 'not found'}}), 404 out = [f.get_fields(with_id=True) for f in friends] return jsonify(out), 200
def api_friend_put(friend_id: int): friend = Friend.find_by_id(friend_id) if friend is None: return jsonify({'error': {'message': 'friend not exists'}}), 404 if is_access_denied(friend.profile_id): return jsonify({'error': {'message': 'forbidden'}}), 403 fields = decode_input() if fields is None: return jsonify({'error': {'message': 'invalid input'}}), 400 friend.update_fields(fields) return '', 204
def api_friend_get_photo(friend_id: int): #print("accept: ", request.headers.getlist('accept')) #print("application/json: ", request.accept_mimetypes["application/json"]) #print("image/*: ", request.accept_mimetypes["image/*"]) friend = Friend.find_by_id(friend_id) if request.accept_mimetypes["application/json"] >= 1: if friend is None: return jsonify({'error': {'message': 'friend not exists'}}), 404 image_data, type = friend.photo.get_base64() if image_data is None: return jsonify({'error': {'message': 'Photo not uploaded'}}), 404 #print("GET: ", image_data) #print("GET: image_data size: ", len(image_data)) return jsonify({'image': {'data': image_data, 'type': type}}), 200 else: if friend is None: return 'Not found', 404, { 'Content-Type': 'text/plain; charset=utf-8' } data, type = friend.photo.get_binary() if not data or not type: return 'Not found', 404, { 'Content-Type': 'text/plain; charset=utf-8' } return data, 200, {'Content-Type': type}
def api_friend_create(profile_id: int): if is_access_denied(profile_id): return jsonify({'error': {'message': 'forbidden'}}), 403 profile = Profile.find_by_id(profile_id) if profile is None: print('profile not found') return jsonify({'error': {'message': 'profile not found'}}), 404 fields = decode_input() if fields is None: return jsonify({'error': {'message': 'invalid input'}}), 400 friend, error = Friend.create(profile, fields) if friend is None: return jsonify({'error': error}), error['status'] return jsonify({'friend_id': friend.id}), 201, { 'location': '/api/friend/{}'.format(friend.id) }