1

I have a simple python server script to conditionally respond to post requests. But is not sending responses

Have searched stack overflow and online to find examples of the same behaviour

from http.server import BaseHTTPRequestHandler
import json
verb_id = "http://id.tincanapi.com/verb/rated"
print('starting')

def respond(statement):
     email = statement["actor"]["mbox"]
     verb = statement["verb"]["id"]
     response = statement["result"]["response"]
     return ('Recieved statement from {email}, verb: {verb} with response: {response}'.format(email=email, verb=verb, response=response))

class RestHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_POST(self):
        content_len = int(self.headers.get('Content-Length'))
        post_body = self.rfile.read(content_len)
        parsed_body = json.loads(post_body)
        verb = parsed_body["statement"]["verb"]["id"]
        if (verb == verb_id):
            response = respond(parsed_body["statement"])
            self.wfile.write(response.encode("utf-8"))
        else:
            print('recieved statement without rated')
            self.wfile.write("Not processed".encode("utf-8"))
        self.send_response(200)
        self.end_headers()
        return

httpd = HTTPServer(('0.0.0.0', 8025 ), RestHTTPRequestHandler)
while True:
    httpd.handle_request()

The log shows 127.0.0.1 - - [11/Apr/2019 15:56:03] "POST / HTTP/1.1" 200 -

After each request, but Postman gives me 'Could not get any response'

I would expect to be getting a 200 to all post requests and the status returned from the if statement (either the result of the respond function or "Not Processed")

I am using Python 3.6

Thanks in advance

Dan Stein
  • 11
  • 2

0 Answers0