Skip to content

Commit 6b0e39b

Browse files
committed
Support -G and --data-urlencode
1 parent 7405674 commit 6b0e39b

File tree

5 files changed

+15
-5
lines changed

5 files changed

+15
-5
lines changed

src/Console/Commands/CurlCommand.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
class CurlCommand extends Command
99
{
10-
protected $signature = 'shift:curl {--X|request=GET} {--H|header=*} {--d|data=*} {--F|form=*} {--digest} {--basic} {--connect-timeout=} {--max-timeout=} {--retry=} {--s|silent} {--u|user=} {url}';
10+
protected $signature = 'shift:curl {--X|request=} {--G|get} {--H|header=*} {--d|data=*} {--data-urlencode=*} {--F|form=*} {--digest} {--basic} {--connect-timeout=} {--max-timeout=} {--retry=} {--s|silent} {--u|user=} {url}';
1111

1212
protected $description = 'Convert a UNIX curl request to an HTTP Client request';
1313

@@ -26,10 +26,11 @@ public function handle()
2626
private function gatherOptions()
2727
{
2828
return [
29-
'method' => $this->option('request'),
29+
'method' => $this->option('get') ? 'GET' : $this->option('request'),
3030
'url' => $this->argument('url'),
3131
'headers' => $this->option('header'),
3232
'data' => $this->option('data'),
33+
'dataUrlEncode' => $this->option('data-urlencode'),
3334
'fields' => $this->option('form'),
3435
'digest' => $this->option('digest'),
3536
'basic' => $this->option('basic'),
@@ -38,7 +39,6 @@ private function gatherOptions()
3839
'retry' => $this->option('retry'),
3940
'silent' => $this->option('silent'),
4041
'user' => $this->option('user'),
41-
// TODO: map more options...
4242
];
4343
}
4444
}

src/Models/Request.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static function create(array $data): self
3636
{
3737
$url = parse_url($data['url']);
3838

39-
$request = new self(self::buildUrl($url), $data['method']);
39+
$request = new self(self::buildUrl($url), $data['method'] ?? 'GET');
4040

4141
if (isset($url['query'])) {
4242
parse_str($url['query'], $request->data);
@@ -66,7 +66,11 @@ public static function create(array $data): self
6666
$request->multipartFormData = true;
6767
}
6868

69-
if ($request->method === 'GET' && (!empty($data['data']) || !empty($data['fields']))) {
69+
if (!empty($data['dataUrlEncode'])) {
70+
$request->data = self::parseData($data['dataUrlEncode']);
71+
}
72+
73+
if (is_null($data['method']) && (!empty($data['data']) || !empty($data['fields']))) {
7074
$request->method = 'POST';
7175
}
7276

tests/Feature/Console/Commands/CurlCommandTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function curlCommandFixtures()
3737
'Mailgun example request' => ['mailgun-example'],
3838
'Digital Ocean example request' => ['digital-ocean-example'],
3939
'Stripe example request' => ['stripe-example'],
40+
'Stripe query params' => ['stripe-query-params'],
4041
'Initial connection timeout' => ['connect-timeout'],
4142
'Entire transaction timeout' => ['max-timeout'],
4243
];

tests/fixtures/stripe-query-params.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
curl https://api.stripe.com/v1/customers/search -u sk_test_sabcdef0987654321: --data-urlencode query="name:'fakename' AND metadata['foo']:'bar'" -G
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Http::withBasicAuth('sk_test_sabcdef0987654321', '')
2+
->get('https://api.stripe.com/v1/customers/search', [
3+
'query' => 'name:\'fakename\' AND metadata[\'foo\']:\'bar\'',
4+
]);

0 commit comments

Comments
 (0)