importargparseimportjsonimportreimportshlexfromcollectionsimportOrderedDict,namedtuplefromsix.movesimporthttp_cookiesasCookieparser=argparse.ArgumentParser()parser.add_argument('command')parser.add_argument('url')parser.add_argument('-d','--data')parser.add_argument('-b','--data-binary',default=None)parser.add_argument('-X',default='')parser.add_argument('-H','--header',action='append',default=[])parser.add_argument('--compressed',action='store_true')parser.add_argument('--insecure',action='store_true')BASE_INDENT=" "*4ParsedContext=namedtuple('ParsedContext',['method','url','data','headers','cookies','verify'])defparse_context(curl_command):method="get"tokens=shlex.split(curl_command)parsed_args=parser.parse_args(tokens)post_data=parsed_args.dataorparsed_args.data_binaryifpost_data:method='post'ifparsed_args.X:method=parsed_args.X.lower()cookie_dict=OrderedDict()quoted_headers=OrderedDict()forcurl_headerinparsed_args.header:ifcurl_header.startswith(':'):occurrence=[m.start()forminre.finditer(':',curl_header)]header_key,header_value=curl_header[:occurrence[1]],curl_header[occurrence[1]+1:]else:header_key,header_value=curl_header.split(":",1)ifheader_key.lower()=='cookie':cookie=Cookie.SimpleCookie(header_value)forkeyincookie:cookie_dict[key]=cookie[key].valueelse:quoted_headers[header_key]=header_value.strip()returnParsedContext(method=method,url=parsed_args.url,data=post_data,headers=quoted_headers,cookies=cookie_dict,verify=parsed_args.insecure)defparse(curl_command):parsed_context=parse_context(curl_command)data_token=''ifparsed_context.data:data_token='{}data=\'{}\',\n'.format(BASE_INDENT,parsed_context.data)verify_token=''ifparsed_context.verify:verify_token='\n{}verify=False'formatter={'method':parsed_context.method,'url':parsed_context.url,'data_token':data_token,'headers_token':"{}headers={}".format(BASE_INDENT,dict_to_pretty_string(parsed_context.headers)),'cookies_token':"{}cookies={}".format(BASE_INDENT,dict_to_pretty_string(parsed_context.cookies)),'security_token':verify_token}return"""import requestsurl = "http://localhost:22222"url = "{url}"resp = requests.{method}( url,{data_token}{headers_token},{cookies_token},{security_token})print(resp.text)""".format(**formatter)defdict_to_pretty_string(the_dict,indent=4):ifnotthe_dict:return"{}"return("\n"+" "*indent).join(json.dumps(the_dict,sort_keys=True,indent=indent,separators=(',',': ')).splitlines())