From ec9ac55748bb63423ae2e9c65764b7dec4f1fbcc Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Wed, 8 Feb 2017 13:51:08 +0100 Subject: [PATCH 1/3] Changed '/api/v1/plex/request' endpoint to return json obj --- v1/app.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v1/app.py b/v1/app.py index c8612bb..4f716d9 100755 --- a/v1/app.py +++ b/v1/app.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# -*- coding: utf-8 -*- # Flask auth with HTTP '$ pip install flask_httpauth' # For https '$ pip install Flask-SSLify' @@ -106,7 +107,7 @@ def get_movieRequest(): url = tmdbBaseURL + requestType + requestAPI + requestQuery + requestLanguage # url = "https://api.themoviedb.org/3/search/multi?include_adult=false&query=home%20alone&language=en-US&api_key=9fa154f5355c37a1b9b57ac06e7d6712" - payload = "{}" + payload = "{application/json}" response = requests.request("GET", url, data=payload) print(response.text) From fd10b553f51fab2a945a83bc22e83df6d8a3d1dd Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Wed, 8 Feb 2017 13:52:11 +0100 Subject: [PATCH 2/3] Changed host to have localhost as default ip --- v1/app.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/v1/app.py b/v1/app.py index 4f716d9..2f2d234 100755 --- a/v1/app.py +++ b/v1/app.py @@ -107,11 +107,10 @@ def get_movieRequest(): url = tmdbBaseURL + requestType + requestAPI + requestQuery + requestLanguage # url = "https://api.themoviedb.org/3/search/multi?include_adult=false&query=home%20alone&language=en-US&api_key=9fa154f5355c37a1b9b57ac06e7d6712" - payload = "{application/json}" - response = requests.request("GET", url, data=payload) + response = requests.get(url) - print(response.text) - return response.text + print(response.json) + return response.json else: return jsonify ({ "Error": "Query not defined." }) @@ -158,4 +157,4 @@ def get_uptimesLoad(): if __name__ == '__main__': - app.run(port=63590, debug=True) + app.run(host="0.0.0.0", port=63590, debug=True) From 2d0b26ed4401194c4542438f2f25bccf107874ac Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Thu, 9 Feb 2017 00:44:02 +0100 Subject: [PATCH 3/3] Got app.py ready for pull request --- v1/app.py | 110 +++++++++++++++++++++++++----------------------------- 1 file changed, 51 insertions(+), 59 deletions(-) diff --git a/v1/app.py b/v1/app.py index 2f2d234..06ef810 100755 --- a/v1/app.py +++ b/v1/app.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- # Flask auth with HTTP '$ pip install flask_httpauth' # For https '$ pip install Flask-SSLify' @@ -9,22 +8,23 @@ from json import loads, dumps import requests from werkzeug.security import generate_password_hash, \ - check_password_hash + check_password_hash -from diskusage import diskUsage -from uptime import timeSinceBoot -from cpuTemp import getCpuTemp +from status.diskusage import diskUsage +from status.uptime import timeSinceBoot +from status.cpuTemp import getCpuTemp +from plex.tmdb import tmdbSearch -from plexMovies import getSpecificMovieInfo +from plex.plexMovies import getSpecificMovieInfo app = Flask(__name__, static_url_path = "") auth = HTTPBasicAuth() # Hardcoded users, the password is hashed with salt used by wekzeug users = { - "kevin": "9f6c79bbb3b8bbc4e6aab32314afaf3c812df66b", - "apollo": "BerryTree", - "test": "test" + "kevin": "9f6c79bbb3b8bbc4e6aab32314afaf3c812df66b", + "apollo": "BerryTree", + "test": "test" } tmdbBaseURL = "https://api.themoviedb.org/3/" @@ -37,8 +37,8 @@ tmdbBaseURL = "https://api.themoviedb.org/3/" # # Costum function for hashing and verifying the sent password. # # TODO Read if ok to send in cleartext like this if use https # def verifyHash(pw): -# pw_hash = generate_password_hash(pw) -# return check_password_hash(pw_hash, pw) +# pw_hash = generate_password_hash(pw) +# return check_password_hash(pw_hash, pw) # Flask function for getting password matching username sent by http request @auth.get_password @@ -51,7 +51,7 @@ def get_pw(username): # to not match. @auth.error_handler def unauthorized(): - return make_response(jsonify({'error': 'Unauthorized access'}), 401) + return make_response(jsonify({'error': 'Unauthorized access'}), 401) # This would be replaced with a database, but single process and thread # can use local data like this for simplicity. @@ -60,10 +60,10 @@ def unauthorized(): # Want all return data to be JSON so create custom error response @app.errorhandler(404) def not_found(error): - return make_response(jsonify({'error': 'Not found'}), 404) + return make_response(jsonify({'error': 'Not found'}), 404) @app.errorhandler(400) def bad_request(error): - return make_response(jsonify({'error': 'Bad request'}), 400) + return make_response(jsonify({'error': 'Bad request'}), 400) # --- Apollo Activity --- # @@ -71,90 +71,82 @@ def bad_request(error): @app.route('/api/v1/disks', methods=['GET']) @auth.login_required def get_diskUsage(): - returningDiskUsage = diskUsage(request.args.get('dir')) - if returningDiskUsage != None: - return jsonify(returningDiskUsage) - else: - abort(404) + returningDiskUsage = diskUsage(request.args.get('dir')) + if returningDiskUsage != None: + return jsonify(returningDiskUsage) + else: + abort(404) @app.route('/api/v1/uptimes', methods=['GET']) @auth.login_required def get_uptimes(): - try: - return jsonify({ 'uptime': timeSinceBoot() }) - except: - abort(404) + try: + return jsonify({ 'uptime': timeSinceBoot() }) + except: + abort(404) @app.route('/api/v1/temps', methods=['GET']) def get_temps(): - cpuTemp = getCpuTemp() - if cpuTemp != None: - return jsonify( {"Avg cpu temp": cpuTemp} ) - else: - return jsonify( {"Error":"Temp reading not supported for host machine."} ) + cpuTemp = getCpuTemp() + if cpuTemp != None: + return jsonify( {"Avg cpu temp": cpuTemp} ) + else: + return jsonify( {"Error":"Temp reading not supported for host machine."} ) # TODO PLEX # Search, watching, +photo @app.route('/api/v1/plex/request', methods=['GET']) def get_movieRequest(): - if (request.args.get("query") != None): - requestType = "search/multi?" - requestAPI = "api_key=" + "9fa154f5355c37a1b9b57ac06e7d6712" - requestQuery = "&query=" + str(request.args.get('query')) - requestLanguage = "&language=en.US" + query = request.args.get("query") + if (query != None): + # TODO if list is empty + return jsonify(tmdbSearch(query)) - url = tmdbBaseURL + requestType + requestAPI + requestQuery + requestLanguage - # url = "https://api.themoviedb.org/3/search/multi?include_adult=false&query=home%20alone&language=en-US&api_key=9fa154f5355c37a1b9b57ac06e7d6712" - - response = requests.get(url) - - print(response.json) - return response.json - - else: return jsonify ({ "Error": "Query not defined." }) + else: return jsonify({ "Error": "Query not defined." }) @app.route('/api/v1/plex/movies', methods=['GET']) @auth.login_required def getPlexMovies(): - title = request.args.get('title') + title = request.args.get('title') - movieInfo = getSpecificMovieInfo(title) - if movieInfo != None: - return jsonify(movieInfo) + movieInfo = getSpecificMovieInfo(title) + if movieInfo != None: + return jsonify(movieInfo) - abort(500) + abort(500) @app.route('/api/v1/plex/watchings', methods=['GET']) @auth.login_required def getPlexWatchings(): - r = requests.get('http://10.0.0.41:32400/status/sessions') + r = requests.get('http://10.0.0.41:32400/status/sessions') - return r.text - movieInfo = getSpecificMovieInfo(title) - if movieInfo != None: - return jsonify(movieInfo) + return r.text + movieInfo = getSpecificMovieInfo(title) + if movieInfo != None: + return jsonify(movieInfo) @app.route('/api/v1/uptimes/duration', methods=['GET']) @auth.login_required def get_uptimesDuration(): - up = uptime.uptime() - return jsonify( {'Duration': up.duration} ) + up = uptime.uptime() + return jsonify( {'Duration': up.duration} ) @app.route('/api/v1/uptimes/users', methods=['GET']) @auth.login_required def get_uptimesUsers(): - up = uptime.uptime() - return jsonify( {'Users': up.users} ) + up = uptime.uptime() + return jsonify( {'Users': up.users} ) @app.route('/api/v1/uptimes/load', methods=['GET']) @auth.login_required def get_uptimesLoad(): - up = uptime.uptime() - return jsonify( {'Load': up.load} ) + up = uptime.uptime() + return jsonify( {'Load': up.load} ) if __name__ == '__main__': - app.run(host="0.0.0.0", port=63590, debug=True) + app.run(host="0.0.0.0",port=63590, debug=True) +