CURL 语法转换为原生 Python、Go、PHP、JavaScript、R、Elixir 和 Dart HTTP 代码

   将 CURL 语法转换为原生 Python、Go、PHP、JavaScript、R、Elixir 和 Dart HTTP 代码

安装

$ npm install --save curlconverter

用法

var  curlconverter  =  require ( 'curlconverter' ) ;

卷曲转换器到Python (centralnotice_buckets_by_campaign =%7B%22C14_enUS_dsk_lw_FR%22%3A%7B%22val%22%3A%220%22%2C%22start%22%3A1412172000%2C%22end%22%3A1422576000%7D%2C%22C14_en5C_dec_dsk_FR%22%3A%7B %22val%22%3A3%2C%22start%22%3A1417514400%2C%22end%22%3A1425290400%7D%2C%22C14_en5C_bkup_dsk_FR%22%3A%7B%23%20%20%20%20%C%20%20%20%20%20%20%C%20%20%20%20%C %22end%22%3A1425290400%7D%7D;centralnotice_bannercount_fr12=22;centralnotice_bannercount_fr12-wait=14' -H 'Connection: keep-alive' --compressed") ;

返回一串 Python 代码,如:

进口 请求

cookie  = {
     'GeoIP''US:Albuquerque:35.1241:-106.7675:v4''uls-previous-languages''%5B%22en%22%5D''mediaWiki.user.sessionId''VaHaeVzvx3kvcyv3kv3k ,
     'centralnotice_buckets_by_campaign' : '%7B%22C14_enUS_dsk_lw_FR%22%3A%7B%22val%22%3A%220%22%2C%22start%22%3A1412172000%2C%20%2000%2C%20%2000%2C%20000%2C%20%2D1C_120%2C%2C%2D2C_120%2C%2D2C_120%2C_120%C_120%C_20%2C%20%2C%2C%20%2C_120%C_120%20%C%20%20%C%20%20%C%D %3A%7B%22val%22%3A3%2C%22start%22%3A1417514400%2C%22end%22%3A1425290400%7D%2C%22C14_en5C_bkup_dsk_FR%22%3%A%22%22%A%22%C %3A1417428000%2C%22end%22%3A1425290400%7D%7D' ,
     'centralnotice_bannercount_fr12' :'22''centralnotice_bannercount_fr12-wait''14',
}

headers  = {
     'Accept-Encoding' : 'gzip, deflate, sdch' ,
     'Accept-Language' : 'en-US,en;q=0.8' ,
     'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36' ,
     'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, */*;q=0.8' ,
     'Referer' : 'http://www.wikipedia.org/' ,
     'Connection' : 'keep-alive' ,
}

响应 = 请求get ( 'http://en.wikipedia.org/' , headers = headers , cookies = cookies )

贡献

我宁愿编写程序来编写程序而不是编写程序。

Dick Sites,数字设备公司,1985 年 9 月

确保您正在运行节点 12 或更高版本。测试套件将在旧版本的节点上失败。

如果添加新生成器,请确保更新cli.js中支持的语言列表,否则将无法从命令行访问。此外,您需要为新生成器更新 test.js 和 index.js,使其成为测试的一部分。

如果要添加新功能,请从测试开始。

  • 创建一个包含 curl 命令的文件,fixtures/curl_commands并使用描述性文件名,例如post_with_headers.txt
  • fixtures/python_output/使用匹配的文件名(但不同的扩展名)创建一个包含输出的文件,例如post_with_headers.py
  • 使用npm test.
  • 如果您的文件名正确匹配,您应该会看到一个失败的测试。通过修改解析器util.js或生成器来修复它generators/

解析器生成代码生成器函数使用的通用数据结构。

您可以使用以下命令运行特定测试:

node test.js --test=test_name

其中“test_name”是一个文件(没有扩展名) fixtures/curl_commands

您可以使用以下命令运行特定测试:

node test.js --language=R

我建议使用调试器设置它,以便您可以准确地看到解析器传递给生成器的内容。这是我的单个测试的 Intellij 运行配置: CURL 语法转换为原生 Python、Go、PHP、JavaScript、R、Elixir 和 Dart HTTP 代码

在提交 PR 之前,请检查您的 JS 代码是否符合standardjs强制执行的代码风格。如果没有,请使用以下内容修复您的代码:

$ 标准 --fix my_file.js

如果您遇到困难,请通过电子邮件与我们联系。我总是愿意参加谷歌环聊和结对计划。

贡献者

  • jeayu(Java 支持)
  • Muhammad Reza Irvanda(python 环境变量)
  • Weslen Nascimento(节点获取)
  • Roman Druzki(积压清理,解析改进)
  • NoahCardoza(命令行界面)
  • ssi-anik(JSON 支持)
  • hrbrmstr (R 支持)
  • daniellockard (Go 支持)
  • eliask(改进python输出)
  • trdarr(开发运营和代码风格)
  • nashe(修复 PHP 输出)
  • bfontaine(减少测试套件中的代码重复)
  • 海狗007
  • 尼克蒂姆科
  • 温卡尔特
  • nico202
  • r3m0t
  • csells (Dart 支持)
  • yanshiyason (Elixir 支持)
  • Robertof(Rust 增强,正确性,es6)
  • clintonc(代码质量/简洁性,测试套件一致性)
  • MarkReeder(JSON 格式)
  • cf512(错误修正和功能请求)
  • DainisGorbunovs(MATLAB 支持)
  • TennyZhuang(原始数据支持).

原文地址:https://github.com/NickCarneiro/curlconverter;如有侵权,联系删除。

链接地址:堆栈导航——CURL转换