diff --git a/server - Copy.py b/server - Copy.py new file mode 100644 index 00000000..430d1dc7 --- /dev/null +++ b/server - Copy.py @@ -0,0 +1,19 @@ +import os +import http.server +import socketserver + +from http import HTTPStatus + + +class Handler(http.server.SimpleHTTPRequestHandler): + def do_GET(self): + self.send_response(HTTPStatus.OK) + self.end_headers() + msg = 'Hello! you requested %s' % (self.path) + self.wfile.write(msg.encode()) + + +port = int(os.getenv('PORT', 80)) +print('Listening on port %s' % (port)) +httpd = socketserver.TCPServer(('', port), Handler) +httpd.serve_forever() diff --git a/server.py b/server.py index 430d1dc7..72ae84c5 100644 --- a/server.py +++ b/server.py @@ -1,19 +1,53 @@ -import os -import http.server -import socketserver +from flask import Flask, request, jsonify +app = Flask(__name__) -from http import HTTPStatus +@app.route('/getmsg/', methods=['GET']) +def respond(): + # Retrieve the name from the url parameter /getmsg/?name= + name = request.args.get("name", None) -class Handler(http.server.SimpleHTTPRequestHandler): - def do_GET(self): - self.send_response(HTTPStatus.OK) - self.end_headers() - msg = 'Hello! you requested %s' % (self.path) - self.wfile.write(msg.encode()) + # For debugging + print(f"Received: {name}") + response = {} -port = int(os.getenv('PORT', 80)) -print('Listening on port %s' % (port)) -httpd = socketserver.TCPServer(('', port), Handler) -httpd.serve_forever() + # Check if the user sent a name at all + if not name: + response["ERROR"] = "No name found. Please send a name." + # Check if the user entered a number + elif str(name).isdigit(): + response["ERROR"] = "The name can't be numeric. Please send a string." + else: + response["MESSAGE"] = f"Welcome {name} to our awesome API!" + + # Return the response in json format + return jsonify(response) + + +@app.route('/post/', methods=['POST']) +def post_something(): + param = request.form.get('name') + print(param) + # You can add the test cases you made in the previous function, but in our case here you are just testing the POST functionality + if param: + return jsonify({ + "Message": f"Welcome {name} to our awesome API!", + # Add this option to distinct the POST request + "METHOD": "POST" + }) + else: + return jsonify({ + "ERROR": "No name found. Please send a name." + }) + + +@app.route('/') +def index(): + # A welcome message to test our server + return "

Welcome to our medium-greeting-api!

" + + +if __name__ == '__main__': + # Threaded option to enable multiple instances for multiple user access support + app.run(threaded=True, port=5000) \ No newline at end of file