import yaml class Request(): def __init__(self): self.input = {} self.output = {} self.data_start = 0 def double_quote(self, mystr): return mystr return "\"" + str(mystr) + "\"" def generate_yaml(self): data = dict( meta=dict( author="Zack", enabled=True, name="EXAMPLE.yaml", description="Description" ), tests=[dict( rule_id=1234, stages=[dict( stage=dict( input=self.input, output=dict( status=200 ) ) )] )] ) return yaml.dump(data, default_flow_style=False) def get_request_line(self, req): req = req.split('\r\n')[0] req = req.split(' ', 2) self.input["method"] = self.double_quote(req[0]) self.input["uri"] = self.double_quote(req[1]) self.input["version"] = self.double_quote(req[2]) def get_headers(self, req): req = req.split('\r\n')[1:] header = {} for num in range(len(req)): if req[num] == '': self.data_start = num break head = req[num].split(':') header[head[0]] = head[1].strip() self.input["headers"] = self.double_quote(header) def get_data(self, req): req = req.split('\r\n')[1:] self.input["data"] = self.double_quote( "\r\n".join(req[self.data_start + 1:])) def write_yaml(self, fname, yaml_out): f = open(fname, 'w') f.write(yaml_out) # Example Usage # req = Request() # # request = """GET / HTTP/1.1 # User-Agent: test:/data # # xyz # # """ # request = request.replace('\n', '\r\n') # req.get_request_line(request) # req.get_headers(request) # req.get_data(request) # yaml_out = req.generate_yaml() # write_yaml('out.yaml', yaml_out)