├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── header.md ├── resources.json └── src ├── index.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # Snowpack dependency directory (https://snowpack.dev/) 45 | web_modules/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | .parcel-cache 78 | 79 | # Next.js build output 80 | .next 81 | out 82 | 83 | # Nuxt.js build / generate output 84 | .nuxt 85 | dist 86 | 87 | # Gatsby files 88 | .cache/ 89 | # Comment in the public line in if your project uses Gatsby and not Next.js 90 | # https://nextjs.org/blog/next-9-1#public-directory-support 91 | # public 92 | 93 | # vuepress build output 94 | .vuepress/dist 95 | 96 | # Serverless directories 97 | .serverless/ 98 | 99 | # FuseBox cache 100 | .fusebox/ 101 | 102 | # DynamoDB Local files 103 | .dynamodb/ 104 | 105 | # TernJS port file 106 | .tern-port 107 | 108 | # Stores VSCode versions used for testing VSCode extensions 109 | .vscode-test 110 | 111 | # yarn v2 112 | .yarn/cache 113 | .yarn/unplugged 114 | .yarn/build-state.yml 115 | .yarn/install-state.gz 116 | .pnp.* 117 | 118 | .env 119 | 120 | functions/ 121 | 122 | build/ 123 | 124 | package-lock.json 125 | 126 | README-dev.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Thank you for taking interest in contributing to this project. 4 | 5 | **Please do not edit README.md directly** 6 | 7 | Instead, add the resource under its corresponding language to `resources.json` in the form of: 8 | 9 | ```json 10 | { 11 | "Language Name": [ 12 | ..., 13 | { 14 | "name": "name of the project", 15 | "repo": "github user/repo" 16 | } 17 | ] 18 | } 19 | ``` 20 | 21 | If the programming language of your project is not currently a part of the file, feel free to add it. 22 | 23 | ## Guidelines 24 | 25 | * Add one link per Pull Request. 26 | * Make sure the PR title is in the format of `Add project-name`. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022-present Easybase 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # awesome-http 4 | 📖 A curated list of HTTP clients for various languages & libraries 5 |
6 | 7 | > _Pull Requests welcomed. Please see the [Contributing Guide](CONTRIBUTING.md) before opening a Pull Request._ 8 | 9 |
10 | 11 | [^Comment]: Thank you awesome-scala for the template 12 | 13 | ## Programming Languages 14 | 15 | * [JavaScript](#javascript) 16 | * [Python](#python) 17 | * [Java](#java) 18 | * [Rust](#rust) 19 | * [Swift](#swift) 20 | * [Haskell](#haskell) 21 | * [Go](#go) 22 | * [C++](#c) 23 | * [PHP](#php) 24 | * [Bash/Shell](#bashshell) 25 | 26 | ### JavaScript 27 | Name | Description | GitHub Activity 28 | ---- | ----------- | --------------- 29 | [Axios](https://github.com/axios/axios) | Promise based HTTP client for the browser and node.js | ![GitHub stars](https://img.shields.io/github/stars/axios/axios) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/axios/axios) 30 | [node-fetch](https://github.com/node-fetch/node-fetch) | A light-weight module that brings the Fetch API to Node.js | ![GitHub stars](https://img.shields.io/github/stars/node-fetch/node-fetch) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/node-fetch/node-fetch) 31 | [Got](https://github.com/sindresorhus/got) | 🌐 Human-friendly and powerful HTTP request library for Node.js | ![GitHub stars](https://img.shields.io/github/stars/sindresorhus/got) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sindresorhus/got) 32 | [superagent](https://github.com/visionmedia/superagent) | Ajax for Node.js and browsers (JS HTTP client) | ![GitHub stars](https://img.shields.io/github/stars/visionmedia/superagent) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/visionmedia/superagent) 33 | [Needle](https://github.com/tomas/needle) | Nimble, streamable HTTP client for Node.js. With proxy, iconv, cookie, deflate & multipart support. | ![GitHub stars](https://img.shields.io/github/stars/tomas/needle) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/tomas/needle) 34 | 35 | ### Python 36 | Name | Description | GitHub Activity 37 | ---- | ----------- | --------------- 38 | [Requests](https://github.com/psf/requests) | A simple, yet elegant, HTTP library. | ![GitHub stars](https://img.shields.io/github/stars/psf/requests) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/psf/requests) 39 | [urllib3](https://github.com/urllib3/urllib3) | Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more. | ![GitHub stars](https://img.shields.io/github/stars/urllib3/urllib3) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/urllib3/urllib3) 40 | [httplib2](https://github.com/httplib2/httplib2) | Small, fast HTTP client library for Python. Features persistent connections, cache, and Google App … | ![GitHub stars](https://img.shields.io/github/stars/httplib2/httplib2) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/httplib2/httplib2) 41 | [GRequests](https://github.com/spyoungtech/grequests) | Requests + Gevent = <3 | ![GitHub stars](https://img.shields.io/github/stars/spyoungtech/grequests) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/spyoungtech/grequests) 42 | [Uplink](https://github.com/prkumar/uplink) | A Declarative HTTP Client for Python | ![GitHub stars](https://img.shields.io/github/stars/prkumar/uplink) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/prkumar/uplink) 43 | 44 | ### Java 45 | Name | Description | GitHub Activity 46 | ---- | ----------- | --------------- 47 | [Eclipse Jetty](https://github.com/eclipse/jetty.project) | Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets… | ![GitHub stars](https://img.shields.io/github/stars/eclipse/jetty.project) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/eclipse/jetty.project) 48 | [OkHttp](https://github.com/square/okhttp) | Square’s meticulous HTTP client for the JVM, Android, and GraalVM. | ![GitHub stars](https://img.shields.io/github/stars/square/okhttp) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/square/okhttp) 49 | [Heritrix](https://github.com/internetarchive/heritrix3) | Heritrix is the Internet Archive's open-source, extensible, web-scale, archival-quality web crawler… | ![GitHub stars](https://img.shields.io/github/stars/internetarchive/heritrix3) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/internetarchive/heritrix3) 50 | [Apache HttpClient](https://github.com/apache/httpcomponents-client) | Mirror of Apache HttpClient | ![GitHub stars](https://img.shields.io/github/stars/apache/httpcomponents-client) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/apache/httpcomponents-client) 51 | [Google HTTP Client Library](https://github.com/googleapis/google-http-java-client) | Google HTTP Client Library for Java | ![GitHub stars](https://img.shields.io/github/stars/googleapis/google-http-java-client) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/googleapis/google-http-java-client) 52 | [Http Request](https://github.com/kevinsawicki/http-request) | Java HTTP Request Library | ![GitHub stars](https://img.shields.io/github/stars/kevinsawicki/http-request) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/kevinsawicki/http-request) 53 | 54 | ### Rust 55 | Name | Description | GitHub Activity 56 | ---- | ----------- | --------------- 57 | [reqwest](https://github.com/seanmonstar/reqwest) | An easy and powerful Rust HTTP Client | ![GitHub stars](https://img.shields.io/github/stars/seanmonstar/reqwest) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/seanmonstar/reqwest) 58 | [hyper](https://github.com/hyperium/hyper) | An HTTP library for Rust | ![GitHub stars](https://img.shields.io/github/stars/hyperium/hyper) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/hyperium/hyper) 59 | [Isahc](https://github.com/sagebind/isahc) | The practical HTTP client that is fun to use. | ![GitHub stars](https://img.shields.io/github/stars/sagebind/isahc) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sagebind/isahc) 60 | [Surf](https://github.com/http-rs/surf) | Fast and friendly HTTP client framework for async Rust | ![GitHub stars](https://img.shields.io/github/stars/http-rs/surf) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/http-rs/surf) 61 | [curl-rust](https://github.com/alexcrichton/curl-rust) | Rust bindings to libcurl | ![GitHub stars](https://img.shields.io/github/stars/alexcrichton/curl-rust) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/alexcrichton/curl-rust) 62 | 63 | ### Swift 64 | Name | Description | GitHub Activity 65 | ---- | ----------- | --------------- 66 | [Alamofire](https://github.com/Alamofire/Alamofire) | Elegant HTTP Networking in Swift | ![GitHub stars](https://img.shields.io/github/stars/Alamofire/Alamofire) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Alamofire/Alamofire) 67 | [SwiftHTTP](https://github.com/daltoniam/SwiftHTTP) | Thin wrapper around NSURLSession in swift. Simplifies HTTP requests. | ![GitHub stars](https://img.shields.io/github/stars/daltoniam/SwiftHTTP) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/daltoniam/SwiftHTTP) 68 | [Net](https://github.com/nghialv/Net) | Http Request wrapper written in Swift | ![GitHub stars](https://img.shields.io/github/stars/nghialv/Net) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/nghialv/Net) 69 | [Moya](https://github.com/Moya/Moya) | Network abstraction layer written in Swift. | ![GitHub stars](https://img.shields.io/github/stars/Moya/Moya) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Moya/Moya) 70 | [Just](https://github.com/dduan/Just) | Swift HTTP for Humans | ![GitHub stars](https://img.shields.io/github/stars/dduan/Just) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/dduan/Just) 71 | [Kingfisher](https://github.com/onevcat/Kingfisher) | A lightweight, pure-Swift library for downloading and caching images from the web. | ![GitHub stars](https://img.shields.io/github/stars/onevcat/Kingfisher) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/onevcat/Kingfisher) 72 | 73 | ### Haskell 74 | Name | Description | GitHub Activity 75 | ---- | ----------- | --------------- 76 | [Req](https://github.com/mrkkrp/req) | An HTTP client library | ![GitHub stars](https://img.shields.io/github/stars/mrkkrp/req) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/mrkkrp/req) 77 | [http-client](https://github.com/snoyberg/http-client) | An HTTP client engine, intended as a base layer for more user-friendly packages. | ![GitHub stars](https://img.shields.io/github/stars/snoyberg/http-client) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/snoyberg/http-client) 78 | [servant-client](https://github.com/haskell-servant/servant) | Main repository for the servant libraries — DSL for describing, serving, querying, mocking, documen… | ![GitHub stars](https://img.shields.io/github/stars/haskell-servant/servant) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/haskell-servant/servant) 79 | [http-streams](https://github.com/aesiniath/http-streams) | Haskell HTTP client library for use with io-streams | ![GitHub stars](https://img.shields.io/github/stars/aesiniath/http-streams) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/aesiniath/http-streams) 80 | 81 | ### Go 82 | Name | Description | GitHub Activity 83 | ---- | ----------- | --------------- 84 | [Req](https://github.com/imroc/req) | Simple Go HTTP client with Black Magic | ![GitHub stars](https://img.shields.io/github/stars/imroc/req) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/imroc/req) 85 | [Resty](https://github.com/go-resty/resty) | Simple HTTP and REST client library for Go | ![GitHub stars](https://img.shields.io/github/stars/go-resty/resty) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/go-resty/resty) 86 | [Sling](https://github.com/dghubble/sling) | A Go HTTP client library for creating and sending API requests | ![GitHub stars](https://img.shields.io/github/stars/dghubble/sling) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/dghubble/sling) 87 | [requests](https://github.com/asmcos/requests) | A golang HTTP client library. Salute to python requests. | ![GitHub stars](https://img.shields.io/github/stars/asmcos/requests) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/asmcos/requests) 88 | 89 | ### C++ 90 | Name | Description | GitHub Activity 91 | ---- | ----------- | --------------- 92 | [Apache Serf](https://github.com/apache/serf) | Mirror of Apache Serf | ![GitHub stars](https://img.shields.io/github/stars/apache/serf) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/apache/serf) 93 | [Curl for People](https://github.com/libcpr/cpr) | C++ Requests: Curl for People, a spiritual port of Python Requests. | ![GitHub stars](https://img.shields.io/github/stars/libcpr/cpr) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/libcpr/cpr) 94 | [cpp-netlib](https://github.com/cpp-netlib/cpp-netlib) | The C++ Network Library Project -- cross-platform, standards compliant networking library. | ![GitHub stars](https://img.shields.io/github/stars/cpp-netlib/cpp-netlib) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/cpp-netlib/cpp-netlib) 95 | [Webcc](https://github.com/sprinfall/webcc) | Lightweight C++ HTTP client and server library based on Asio for embedding purpose. | ![GitHub stars](https://img.shields.io/github/stars/sprinfall/webcc) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sprinfall/webcc) 96 | [Proxygen](https://github.com/facebook/proxygen) | A collection of C++ HTTP libraries including an easy to use HTTP server. | ![GitHub stars](https://img.shields.io/github/stars/facebook/proxygen) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/facebook/proxygen) 97 | [cpp-httplib](https://github.com/yhirose/cpp-httplib) | A C++ header-only HTTP/HTTPS server and client library | ![GitHub stars](https://img.shields.io/github/stars/yhirose/cpp-httplib) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/yhirose/cpp-httplib) 98 | [NFHTTP](https://github.com/spotify/NFHTTP) | A cross platform C++ HTTP library that interfaces natively to other platforms. | ![GitHub stars](https://img.shields.io/github/stars/spotify/NFHTTP) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/spotify/NFHTTP) 99 | [EasyHttp](https://github.com/sony/easyhttpcpp) | A cross-platform HTTP client library with a focus on usability and speed | ![GitHub stars](https://img.shields.io/github/stars/sony/easyhttpcpp) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sony/easyhttpcpp) 100 | 101 | ### PHP 102 | Name | Description | GitHub Activity 103 | ---- | ----------- | --------------- 104 | [Guzzle](https://github.com/guzzle/guzzle) | Guzzle, an extensible PHP HTTP client | ![GitHub stars](https://img.shields.io/github/stars/guzzle/guzzle) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/guzzle/guzzle) 105 | [HTTPlug](https://github.com/php-http/httplug) | HTTPlug, the HTTP client abstraction for PHP | ![GitHub stars](https://img.shields.io/github/stars/php-http/httplug) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/php-http/httplug) 106 | [HTTP Client](https://github.com/amphp/http-client) | Async HTTP/1.1+2 client for PHP based on Amp. | ![GitHub stars](https://img.shields.io/github/stars/amphp/http-client) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/amphp/http-client) 107 | [SendGrid HTTP Client](https://github.com/sendgrid/php-http-client) | SendGrid's PHP HTTP Client for calling APIs | ![GitHub stars](https://img.shields.io/github/stars/sendgrid/php-http-client) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/sendgrid/php-http-client) 108 | [Buzz](https://github.com/kriswallsmith/Buzz) | PHP's lightweight HTTP client | ![GitHub stars](https://img.shields.io/github/stars/kriswallsmith/Buzz) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/kriswallsmith/Buzz) 109 | 110 | ### Bash/Shell 111 | Name | Description | GitHub Activity 112 | ---- | ----------- | --------------- 113 | [HTTPie](https://github.com/httpie/httpie) | As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. J… | ![GitHub stars](https://img.shields.io/github/stars/httpie/httpie) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/httpie/httpie) 114 | [curl](https://github.com/curl/curl) | A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, … | ![GitHub stars](https://img.shields.io/github/stars/curl/curl) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/curl/curl) 115 | [aria2](https://github.com/aria2/aria2) | aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in c… | ![GitHub stars](https://img.shields.io/github/stars/aria2/aria2) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/aria2/aria2) 116 | [HTTP Prompt](https://github.com/httpie/http-prompt) | An interactive command-line HTTP and API testing client built on top of HTTPie featuring autocomple… | ![GitHub stars](https://img.shields.io/github/stars/httpie/http-prompt) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/httpie/http-prompt) 117 | [Resty](https://github.com/micha/resty) | Little command line REST client that you can use in pipelines (bash or zsh). | ![GitHub stars](https://img.shields.io/github/stars/micha/resty) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/micha/resty) 118 | [Ain](https://github.com/jonaslu/ain) | A HTTP API client for the terminal | ![GitHub stars](https://img.shields.io/github/stars/jonaslu/ain) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/jonaslu/ain) 119 | 120 | -------------------------------------------------------------------------------- /header.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # awesome-http 4 | 📖 A curated list of HTTP clients for various languages & libraries 5 |
6 | 7 | > _Pull Requests welcomed. Please see the [Contributing Guide](CONTRIBUTING.md) before opening a Pull Request._ 8 | 9 |
10 | 11 | [^Comment]: Thank you awesome-scala for the template 12 | 13 | ## Programming Languages 14 | 15 | * [JavaScript](#javascript) 16 | * [Python](#python) 17 | * [Java](#java) 18 | * [Rust](#rust) 19 | * [Swift](#swift) 20 | * [Haskell](#haskell) 21 | * [Go](#go) 22 | * [C++](#c) 23 | * [PHP](#php) 24 | * [Bash/Shell](#bashshell) -------------------------------------------------------------------------------- /resources.json: -------------------------------------------------------------------------------- 1 | { 2 | "JavaScript": [ 3 | { 4 | "name": "Axios", 5 | "repo": "axios/axios" 6 | }, 7 | { 8 | "name": "node-fetch", 9 | "repo": "node-fetch/node-fetch" 10 | }, 11 | { 12 | "name": "Got", 13 | "repo": "sindresorhus/got" 14 | }, 15 | { 16 | "name": "superagent", 17 | "repo": "visionmedia/superagent" 18 | }, 19 | { 20 | "name": "Needle", 21 | "repo": "tomas/needle" 22 | } 23 | ], 24 | "Python": [ 25 | { 26 | "name": "Requests", 27 | "repo": "psf/requests" 28 | }, 29 | { 30 | "name": "urllib3", 31 | "repo": "urllib3/urllib3" 32 | }, 33 | { 34 | "name": "httplib2", 35 | "repo": "httplib2/httplib2" 36 | }, 37 | { 38 | "name": "GRequests", 39 | "repo": "spyoungtech/grequests" 40 | }, 41 | { 42 | "name": "Uplink", 43 | "repo": "prkumar/uplink" 44 | } 45 | ], 46 | "Java": [ 47 | { 48 | "name": "Eclipse Jetty", 49 | "repo": "eclipse/jetty.project" 50 | }, 51 | { 52 | "name": "OkHttp", 53 | "repo": "square/okhttp" 54 | }, 55 | { 56 | "name": "Heritrix", 57 | "repo": "internetarchive/heritrix3" 58 | }, 59 | { 60 | "name": "Apache HttpClient", 61 | "repo": "apache/httpcomponents-client" 62 | }, 63 | { 64 | "name": "Google HTTP Client Library", 65 | "repo": "googleapis/google-http-java-client" 66 | }, 67 | { 68 | "name": "Http Request", 69 | "repo": "kevinsawicki/http-request" 70 | } 71 | ], 72 | "Rust": [ 73 | { 74 | "name": "reqwest", 75 | "repo": "seanmonstar/reqwest" 76 | }, 77 | { 78 | "name": "hyper", 79 | "repo": "hyperium/hyper" 80 | }, 81 | { 82 | "name": "Isahc", 83 | "repo": "sagebind/isahc" 84 | }, 85 | { 86 | "name": "Surf", 87 | "repo": "http-rs/surf" 88 | }, 89 | { 90 | "name": "curl-rust", 91 | "repo": "alexcrichton/curl-rust" 92 | } 93 | ], 94 | "Swift": [ 95 | { 96 | "name": "Alamofire", 97 | "repo": "Alamofire/Alamofire" 98 | }, 99 | { 100 | "name": "SwiftHTTP", 101 | "repo": "daltoniam/SwiftHTTP" 102 | }, 103 | { 104 | "name": "Net", 105 | "repo": "nghialv/Net" 106 | }, 107 | { 108 | "name": "Moya", 109 | "repo": "Moya/Moya" 110 | }, 111 | { 112 | "name": "Just", 113 | "repo": "dduan/Just" 114 | }, 115 | { 116 | "name": "Kingfisher", 117 | "repo": "onevcat/Kingfisher" 118 | } 119 | ], 120 | "Haskell": [ 121 | { 122 | "name": "Req", 123 | "repo": "mrkkrp/req" 124 | }, 125 | { 126 | "name": "http-client", 127 | "repo": "snoyberg/http-client" 128 | }, 129 | { 130 | "name": "servant-client", 131 | "repo": "haskell-servant/servant" 132 | }, 133 | { 134 | "name": "http-streams", 135 | "repo": "aesiniath/http-streams" 136 | } 137 | ], 138 | "Go": [ 139 | { 140 | "name": "Req", 141 | "repo": "imroc/req" 142 | }, 143 | { 144 | "name": "Resty", 145 | "repo": "go-resty/resty" 146 | }, 147 | { 148 | "name": "Sling", 149 | "repo": "dghubble/sling" 150 | }, 151 | { 152 | "name": "requests", 153 | "repo": "asmcos/requests" 154 | } 155 | ], 156 | "C++": [ 157 | { 158 | "name": "Apache Serf", 159 | "repo": "apache/serf" 160 | }, 161 | { 162 | "name": "Curl for People", 163 | "repo": "libcpr/cpr" 164 | }, 165 | { 166 | "name": "cpp-netlib", 167 | "repo": "cpp-netlib/cpp-netlib" 168 | }, 169 | { 170 | "name": "Webcc", 171 | "repo": "sprinfall/webcc" 172 | }, 173 | { 174 | "name": "Proxygen", 175 | "repo": "facebook/proxygen" 176 | }, 177 | { 178 | "name": "cpp-httplib", 179 | "repo": "yhirose/cpp-httplib" 180 | }, 181 | { 182 | "name": "NFHTTP", 183 | "repo": "spotify/NFHTTP" 184 | }, 185 | { 186 | "name": "EasyHttp", 187 | "repo": "sony/easyhttpcpp" 188 | } 189 | ], 190 | "PHP": [ 191 | { 192 | "name": "Guzzle", 193 | "repo": "guzzle/guzzle" 194 | }, 195 | { 196 | "name": "HTTPlug", 197 | "repo": "php-http/httplug" 198 | }, 199 | { 200 | "name": "HTTP Client", 201 | "repo": "amphp/http-client" 202 | }, 203 | { 204 | "name": "SendGrid HTTP Client", 205 | "repo": "sendgrid/php-http-client" 206 | }, 207 | { 208 | "name": "Buzz", 209 | "repo": "kriswallsmith/Buzz" 210 | } 211 | ], 212 | "Bash/Shell": [ 213 | { 214 | "name": "HTTPie", 215 | "repo": "httpie/httpie" 216 | }, 217 | { 218 | "name": "curl", 219 | "repo": "curl/curl" 220 | }, 221 | { 222 | "name": "aria2", 223 | "repo": "aria2/aria2" 224 | }, 225 | { 226 | "name": "HTTP Prompt", 227 | "repo": "httpie/http-prompt" 228 | }, 229 | { 230 | "name": "Resty", 231 | "repo": "micha/resty" 232 | }, 233 | { 234 | "name": "Ain", 235 | "repo": "jonaslu/ain" 236 | } 237 | ] 238 | } 239 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | var dotenv = require('dotenv'); 2 | dotenv.config(); 3 | var axios = require('axios').default; 4 | var { readFileSync, writeFileSync } = require('fs'); 5 | 6 | const MAX_DESCRIPTION_LENGTH = 100; 7 | 8 | function formatDescription(description) { 9 | if (description) { 10 | if (description.length > MAX_DESCRIPTION_LENGTH) { 11 | return description.substr(0, MAX_DESCRIPTION_LENGTH - 1) + "\u2026"; 12 | } else { 13 | return description; 14 | } 15 | } else { 16 | return "_No description provided_" 17 | } 18 | } 19 | 20 | async function main() { 21 | const resources = JSON.parse(readFileSync('../resources.json')); 22 | const header = readFileSync('../header.md'); 23 | 24 | const allAPIData = {}; 25 | async function githubApiToMap({ name, repo }) { 26 | // https://docs.github.com/en/rest/reference/repos 27 | const githubApiRes = await axios.get(`https://api.github.com/repos/${repo}`, { 28 | headers: { 29 | Accept: "application/vnd.github.v3+json" 30 | }, 31 | auth: process.env.GITHUB_USERNAME ? { 32 | username: process.env.GITHUB_USERNAME, 33 | password: process.env.GITHUB_ACCESS_TOKEN 34 | } : undefined 35 | }); 36 | allAPIData[repo] = githubApiRes.data; 37 | } 38 | 39 | await Promise.all(Object.values(resources).flat().map(singleResource => githubApiToMap(singleResource))); 40 | 41 | let finalMdString = header + "\n\n"; 42 | for (const [lang, repos] of Object.entries(resources)) { 43 | finalMdString += `### ${lang}\nName | Description | GitHub Activity\n---- | ----------- | ---------------`; 44 | for (const currResource of repos) { 45 | const { name, repo } = currResource; 46 | const { description, size, stargazers_count, watchers_count /** ...etc */ } = allAPIData[repo]; 47 | finalMdString += `\n[${name}](https://github.com/${repo}) | ${formatDescription(description)} | ![GitHub stars](https://img.shields.io/github/stars/${repo}) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/${repo})` 48 | } 49 | finalMdString += "\n\n"; 50 | } 51 | writeFileSync("README-dev.md", finalMdString); 52 | } 53 | 54 | require.main === module && main(); -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "awesome-http-src", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "author": "Easybase", 6 | "license": "MIT", 7 | "dependencies": { 8 | "axios": "^0.26.0", 9 | "dotenv": "^16.0.0" 10 | } 11 | } 12 | --------------------------------------------------------------------------------