def get_content(self, path, method): response = HttpResponse(code=ResponseCode.OK) with open(path, 'rb') as f: content = f.read() response.body = content if method != "HEAD" else b'' response.content_length = len(content) response.content_type = self.get_content_type(path) return response
def handle_read(self): try: logging.debug('Connection.handle_read - id=%d' % self.id) b = self.sock.recv(2048) logging.debug('Connection.handle_read - received buffer size is %d bytes' % len(b)) logging.debug('Connection.handle_read - received buffer is : \n%s' % b) if not len(b): logging.debug('Connection.handle_read - 0 bytes received on %d. closing' % self.id) self.close() return self.read_buf += b except socket.error as err: if err.args[0] not in NONBLOCKING: self.handle_error('%s' % args[1]) else : logging.error('Connection.handle_read - NONBLOCKING event on read : %s' % args[1]) else: # check if we have a full http request parser = HttpParser() recved = len(self.read_buf) nparsed = parser.execute(self.read_buf, recved) assert nparsed == recved if not parser.is_message_complete(): # we got a partial request keep on reading logging.debug( 'Connection.handle_read - partial buffer received : \n%s' % self.read_buf) self.reset(pyev.EV_READ) else : # we got a full request self.read_buf = '' # match the verb with URI and call # after that register for write to send response verb = parser.get_method() url = parser.get_path() logging.debug('Connection.handle_read - id %d - method is %s and url %s' % (self.id, verb, url)) call, keyword_args = register.get_callable(url, verb) if not call : err = HttpResponse() err.status_code = 404 err.status_string = 'Not Found' err.headers['Content-Type'] = 'application/txt' err.body = 'URI Not Found\r\n' self.write_buf = err.to_string() else : keyword_args['http_request'] = parser logging.debug('Connection.handle_read - kargs=%s' % keyword_args) try : response = call(*[register.handler,], **keyword_args) self.write_buf = response.to_string() except : err = HttpResponse() err.status_code = 500 err.status_string = 'Internal Server Error' err.headers['Content-Type'] = 'application/txt' err.body = 'Upsssss.\r\n' self.write_buf = err.to_string() logging.debug('Connection.handle_read - requesting write %d' % self.id) self.reset(pyev.EV_WRITE)
def bar(self, name, qualifier, http_request): r = HttpResponse() r.headers['Host'] = 'localhost' r.headers['Content-Type'] = 'application/json' r.body = '{"status": %s}' % qualifier return r
def bar(self, name, qualifier, http_request): r = HttpResponse() r.headers["Host"] = "localhost" r.headers["Content-Type"] = "application/json" r.body = '{"status": %s}' % qualifier return r
def handle_read(self): try: logging.debug('Connection.handle_read - id=%d' % self.id) b = self.sock.recv(2048) logging.debug( 'Connection.handle_read - received buffer size is %d bytes' % len(b)) logging.debug( 'Connection.handle_read - received buffer is : \n%s' % b) if not len(b): logging.debug( 'Connection.handle_read - 0 bytes received on %d. closing' % self.id) self.close() return self.read_buf += b except socket.error as err: if err.args[0] not in NONBLOCKING: self.handle_error('%s' % args[1]) else: logging.error( 'Connection.handle_read - NONBLOCKING event on read : %s' % args[1]) else: # check if we have a full http request parser = HttpParser() recved = len(self.read_buf) nparsed = parser.execute(self.read_buf, recved) assert nparsed == recved if not parser.is_message_complete(): # we got a partial request keep on reading logging.debug( 'Connection.handle_read - partial buffer received : \n%s' % self.read_buf) self.reset(pyev.EV_READ) else: # we got a full request self.read_buf = '' # match the verb with URI and call # after that register for write to send response verb = parser.get_method() url = parser.get_path() logging.debug( 'Connection.handle_read - id %d - method is %s and url %s' % (self.id, verb, url)) call, keyword_args = register.get_callable(url, verb) if not call: err = HttpResponse() err.status_code = 404 err.status_string = 'Not Found' err.headers['Content-Type'] = 'application/txt' err.body = 'URI Not Found\r\n' self.write_buf = err.to_string() else: keyword_args['http_request'] = parser logging.debug('Connection.handle_read - kargs=%s' % keyword_args) try: response = call(*[ register.handler, ], **keyword_args) self.write_buf = response.to_string() except: err = HttpResponse() err.status_code = 500 err.status_string = 'Internal Server Error' err.headers['Content-Type'] = 'application/txt' err.body = 'Upsssss.\r\n' self.write_buf = err.to_string() logging.debug('Connection.handle_read - requesting write %d' % self.id) self.reset(pyev.EV_WRITE)