{"id":14989900,"url":"https://github.com/kei-k23/curlio","last_synced_at":"2025-07-17T22:33:58.451Z","repository":{"id":256121587,"uuid":"853131849","full_name":"Kei-K23/curlio","owner":"Kei-K23","description":"Rewriting the cURL CLI in Rust 🦀","archived":false,"fork":false,"pushed_at":"2024-09-14T02:13:33.000Z","size":162,"stargazers_count":23,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T23:17:00.434Z","etag":null,"topics":["cli","curl","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/curlio","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kei-K23.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-06T03:50:28.000Z","updated_at":"2025-03-24T16:50:29.000Z","dependencies_parsed_at":"2024-09-24T15:59:23.638Z","dependency_job_id":"52174747-68b7-4db7-a6f1-76e3eeaabc50","html_url":"https://github.com/Kei-K23/curlio","commit_stats":{"total_commits":46,"total_committers":1,"mean_commits":46.0,"dds":0.0,"last_synced_commit":"42fbea070c6bd32520e5b81de46a58e4f05170f7"},"previous_names":["kei-k23/rcurl"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Kei-K23/curlio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kei-K23%2Fcurlio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kei-K23%2Fcurlio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kei-K23%2Fcurlio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kei-K23%2Fcurlio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kei-K23","download_url":"https://codeload.github.com/Kei-K23/curlio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kei-K23%2Fcurlio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265672366,"owners_count":23808844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","curl","rust"],"created_at":"2024-09-24T14:19:06.641Z","updated_at":"2025-07-17T22:33:58.432Z","avatar_url":"https://github.com/Kei-K23.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Curlio - A cURL Implementation in Rust\n\n`curlio` is a command-line tool built in `Rust` that mimics the functionality of `cURL`. It allows you to send HTTP requests to `URLs` with support for various HTTP methods, custom headers, request body data (including JSON and multipart form data with file uploads), and more. The tool also includes options for verbosity, silence, response storage, Download file, zip, images, videos and retry mechanisms.\n\n## Features\n\n- Supports common HTTP methods like `GET`, `POST`, `PUT`, and `DELETE`.\n- Allows custom headers to be passed in JSON format.\n- Sends request body data in various formats.\n- Supports multipart form data including file uploading.\n- Optional verbose mode to show detailed request and response information.\n- Silent mode to suppress output.\n- Option to store response data to a file.\n- Timeout configuration.\n- Retry mechanism for handling failed requests.\n- Basic and Bearer authentication support.\n- Download file, zip, images and videos using `curlio` with nice informatics loading indicator.\n\n## Installation\n\nThis CLI is published with `Cargo`. You can easily download and update with `cargo install curlio` command and accept the binary from everywhere.\n\n```bash\ncargo install curlio\n```\n\n## Local setup\n\nTo use `curlio`, you need to have Rust installed on your system. You can install Rust from [here](https://www.rust-lang.org/tools/install).\n\nOnce Rust is installed, clone the repository and build the project:\n\n```bash\ngit clone https://github.com/Kei-K23/curlio.git\ncd curlio\ncargo build --release\n```\n\n## Usage\n\nRun the executable with the necessary arguments to send HTTP requests. Below are the available options:\n\n```bash\ncurlio 0.4.3\nKei-K23\ncurlio is a cURL implementation in Rust\n\nUSAGE:\n    curlio [OPTIONS] \u003curl\u003e\n\nARGS:\n    \u003curl\u003e    The URL to send the request to\n\nOptions:\n  -X, --request \u003cmethod\u003e         HTTP method (GET, POST, etc.) [default: GET]\n  -d, --data \u003cdata\u003e              Sends the specified data in a POST request\n  -F, --form \u003cform\u003e              Sends multiple form data using JSON structured format (use file path for file uploading)\n  -H, --header \u003cheader\u003e          Add headers to the request\n  -v, --verbose \u003cverbose\u003e        Show detail information about request and response \u003cf for False/ t for True\u003e [default: f]\n  -s, --silent \u003csilent\u003e          Suppress all output \u003cf for False/ t for True\u003e [default: f]\n  -t, --timeout \u003ctimeout\u003e        Set a timeout for the request (in seconds)\n  -r, --retry \u003cretry\u003e            Number of retry attempts in case of failure\n  -S, --store \u003cstore\u003e            Store the response data to file\n  -A, --user-agent \u003cuser_agent\u003e  Specify custom User-Agent\n  -u, --user \u003cbasic_auth\u003e        Provide basic authentication in the format `username:password`\n  -L, --location \u003cfollow\u003e        Follow HTTP redirects \u003cf for False/ t for True\u003e [default: f]\n      --proxy \u003cproxy\u003e            Use HTTP/HTTPS proxy\n  -D, --download \u003cdownload\u003e      Download file and save them in your file system\n      --cookies \u003ccookies\u003e        Attach cookies to the request\n  -h, --help                     Print help\n  -V, --version                  Print version\n```\n\n## Examples\n\n### Main Options\n\n1. Simple GET request:\n\n```bash\ncurlio http://example.com\n```\n\n2. POST request with data:\n\n```bash\ncurlio -X POST -d '{\"key\":\"value\"}' http://example.com\n```\n\n3. GET request with custom headers:\n\n```bash\ncurlio -H '{\"Content-Type\": \"application/json\"}' http://example.com\n```\n\n4. GET request with a timeout:\n\n```bash\ncurlio -t 5 http://example.com\n```\n\n5. Verbose mode:\n\n```bash\ncurlio -v t http://example.com\n```\n\n6. Retry on failure:\n\n```bash\ncurlio -r 3 http://example.com\n```\n\n7. Store the response data to file:\n\n```bash\ncurlio \"https://fakestoreapi.com/products\" -X GET -H '{\"Accept\": \"application/json\"}' -S \"products.json\"\n```\n\n8. Basic Authentication:\n\n```bash\ncurlio -u \"username:password\" http://example.com\n```\n\n9. Bearer Token Authentication:\n\n```bash\ncurlio -H '{\"Authorization\": \"Bearer your_token_here\"}' http://example.com\n```\n\n10. Cookies file support. Add cookies values to request header:\n\n```bash\n\n# Example cookies json file (name what ever you want just to be sure to be .json file)\n# [\n#     {\n#         \"name\": \"session-id\",\n#         \"value\": \"235-3769708-3150250\"\n#     },\n#     {\n#         \"name\": \"ubid-main\",\n#         \"value\": \"134-3687901-5787569\"\n#     },\n#     {\n#         \"name\": \"session-token\",\n#         \"value\": \"\\\"JKASDIUivnisduhfisd213biHUKLFbnoisd2344325\\\"\"\n#     }\n# ]\n\ncurlio 'https://fakestoreapi.com/products' -X GET -H '{\"Accept\": \"application/json\"}' --cookies cookies.json\n```\n\n11. Download files, zips, images, videos as you wish\n\n```bash\ncurlio \"https://file-examples.net/wp-content/uploads/2024/02/SampleTextFile_1MB.txt\" -D test.txt\n\n# Example Output\nStarting download of 1023385 bytes...\nProgress: [#############################                     ] 58.20% (595608/1023385)\n```\n\n### Error Handling\n\nIf the request fails and no retries are specified, an error message will be displayed in the terminal:\n\n```bash\nRequest failed: \u003cError message\u003e\n```\n\nIf retries are enabled, it will retry the request up to the specified count, and you will see output like:\n\n```bash\nAttempt 1 failed, retrying... (\u003cError message\u003e)\n```\n\n## Todo\n\n- [ ] Make binary for other installer methods.\n- [ ] Add test cases to cover all use cases.\n- [ ] Additional features and improvements.\n\n## License \n\nThis project is licensed under the MIT License - see the [LICENSE](/LICENSE) file for details.\n\n## Contribution\n\nAll contributions are welcome. Please open issues or make PR for error, bug, and adding new features.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkei-k23%2Fcurlio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkei-k23%2Fcurlio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkei-k23%2Fcurlio/lists"}