{"id":29068663,"url":"https://github.com/alexkart/curl-builder","last_synced_at":"2025-10-13T19:35:49.354Z","repository":{"id":39717632,"uuid":"198396026","full_name":"alexkart/curl-builder","owner":"alexkart","description":"Curl command generator library","archived":false,"fork":false,"pushed_at":"2025-06-05T09:43:42.000Z","size":184,"stargazers_count":19,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-13T07:33:06.113Z","etag":null,"topics":["curl","curl-builder","curl-command","generate-curl","php","psr-7"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/alexkart.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,"zenodo":null}},"created_at":"2019-07-23T09:17:44.000Z","updated_at":"2025-07-28T12:50:51.000Z","dependencies_parsed_at":"2025-06-27T11:09:17.962Z","dependency_job_id":"2399828a-585f-451d-aa23-32f932fc5547","html_url":"https://github.com/alexkart/curl-builder","commit_stats":{"total_commits":67,"total_committers":3,"mean_commits":"22.333333333333332","dds":0.04477611940298509,"last_synced_commit":"4e6ae912d978e6e65c8b63e305420d97d686e8dc"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/alexkart/curl-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexkart%2Fcurl-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexkart%2Fcurl-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexkart%2Fcurl-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexkart%2Fcurl-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexkart","download_url":"https://codeload.github.com/alexkart/curl-builder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexkart%2Fcurl-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016918,"owners_count":26085887,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["curl","curl-builder","curl-command","generate-curl","php","psr-7"],"created_at":"2025-06-27T11:09:02.303Z","updated_at":"2025-10-13T19:35:49.318Z","avatar_url":"https://github.com/alexkart.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# curl-builder [![build](https://github.com/alexkart/curl-builder/actions/workflows/php.yml/badge.svg)](https://github.com/alexkart/curl-builder/actions/workflows/php.yml) [![Code Coverage](https://scrutinizer-ci.com/g/alexkart/curl-builder/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/alexkart/curl-builder/?branch=master)\n\ncurl-builder is a curl command generator which can generate curl commands automatically from PSR-7 server requests and manually by\nspecifying options and URL.\n\n## Installation\n\n```bash\ncomposer require alexkart/curl-builder\n```\n\n## Examples\n\n### Generating curl command from PSR-7 request\n```php\n$request = new Request('POST', 'http://example.com', [\n    'Connection' =\u003e ['keep-alive'],\n    'Accept' =\u003e [\n        'text/html',\n        'application/xhtml+xml',\n    ],\n], 'data');\n$command = new Command();\n$command-\u003esetRequest($request);\n$curl = $command-\u003ebuild();\n// curl -H 'Connection: keep-alive' -H 'Accept: text/html, application/xhtml+xml' -d 'data' http://example.com\n```\n\n### Constructing curl command manually\n```php\n$command = new Command();\n$command-\u003esetUrl('http://example.com');\n$command-\u003eaddOption('-v');\n$command-\u003eaddOption('-H', 'Connection: keep-alive');\n$command-\u003eaddOption('-H', 'Cache-Control: max-age=0');\n$curl = $command-\u003ebuild();\n// curl -v -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' http://example.com\n```\n\n### Adding options\n\nOptions can be added to the command one by one with `addOption()`\n```php\n$command-\u003eaddOption('-L');\n$command-\u003eaddOption('-v');\n$command-\u003eaddOption('-H', 'Connection: keep-alive');\n// curl -L -v -H 'Connection: keep-alive' ...\n```\n\nor add several of them at once with `addOptions()`\n```php\n$command-\u003eaddOption('-v');\n$command-\u003eaddOptions([\n    '-L',\n    '-d' =\u003e 'test'\n]);\n// curl -v -L -d 'test' ...\n```\n\n`setOptions()` can be used to override previously set options\n```php\n$command-\u003esetOptions(['-L', '-v']);\n// curl -L -v ...\n```\n\n`addOptions()` and `setOptions()` formats:\n```php\n// options without arguments\n// the following lines will generate the same command\n$command-\u003esetOptions(['-L' =\u003e [null], '-v' =\u003e [null]]);\n$command-\u003esetOptions(['-L' =\u003e null, '-v' =\u003e null]);\n$command-\u003esetOptions(['-L', '-v']);\n// curl -L -v ... \n\n// options with arguments\n$command-\u003esetOptions(['-H' =\u003e 'test']);\n// curl -H 'test' ...\n$command-\u003esetOptions(['-H' =\u003e ['test1', 'test2']]);\n// curl -H 'test1' -H 'test2' ...\n```\n\n### Specifying command template\nDefault template for the command is `{name}{options}{url}`. But you can change it with `setTemplate()` method\n```php\n$command = new Command();\n$command-\u003esetUrl('http://example.com');\n$command-\u003eaddOption('-v');\n$command-\u003eaddOption('-L');\n$curl = $command-\u003ebuild();\n// curl -v -L http://example.com\n\n// change order\n$command-\u003esetTemplate(Command::TEMPLATE_COMMAND_NAME . Command::TEMPLATE_URL . Command::TEMPLATE_OPTIONS);\n$curl = $command-\u003ebuild();\n// curl http://example.com -v -L\n\n// remove options\n$command-\u003esetTemplate(Command::TEMPLATE_COMMAND_NAME . Command::TEMPLATE_URL);\n$curl = $command-\u003ebuild();\n// curl http://example.com\n```\n\n### Quoting and escaping arguments\nBy default arguments are quoted with single quotes and if single quote appears in the argument it will be escaped\n```php\n$command-\u003eaddOption('-d', 'data');\n// curl -d 'data'\n\n$command-\u003eaddOption('-d', \"data'1\");\n// curl -d $'data\\'1'\n```\n\nQuoting character can be changed to double quote or removed\n```php\n$command-\u003eaddOption('-d', 'data1');\n$command-\u003eaddOption('-d', 'data\"2');\n$command-\u003esetQuoteCharacter(Command::QUOTE_DOUBLE);\n// curl -d \"data1\" -d \"data\\\"2\"\n\n$command-\u003eaddOption('-d', 'data');\n$command-\u003esetQuoteCharacter(Command::QUOTE_NONE);\n// curl -d data\n\n$command-\u003eaddOption('-d', 'value with spaces');\n$command-\u003esetQuoteCharacter(Command::QUOTE_NONE);\n// curl -d value\\ with\\ spaces\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexkart%2Fcurl-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexkart%2Fcurl-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexkart%2Fcurl-builder/lists"}