Compare commits
No commits in common. '9a99c31d4710d160a54e007ae206ae5ef1897343' and '9af5f501353ce5ed17eabc9f4a2302dd411e8d0b' have entirely different histories.
9a99c31d47
...
9af5f50135
7 changed files with 44 additions and 361 deletions
@ -1,161 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
namespace App\Classes\Http; |
|
||||||
|
|
||||||
class Http { |
|
||||||
|
|
||||||
private string $bodyContent; |
|
||||||
|
|
||||||
private string $bodyFormat; |
|
||||||
|
|
||||||
private array $options = []; |
|
||||||
|
|
||||||
//-------------------------------------// |
|
||||||
|
|
||||||
public function __construct() |
|
||||||
{ |
|
||||||
} |
|
||||||
|
|
||||||
public function delete(string $url, $data = []): Response |
|
||||||
{ |
|
||||||
return $this->send('DELETE', $url, [ |
|
||||||
$this->bodyFormat => $data |
|
||||||
]); |
|
||||||
} |
|
||||||
|
|
||||||
public function get(string $url, $query = null): Response |
|
||||||
{ |
|
||||||
return $this->send('GET', $url, [ |
|
||||||
'query' => $query |
|
||||||
]); |
|
||||||
} |
|
||||||
|
|
||||||
public function patch(string $url, array $data = []): Response |
|
||||||
{ |
|
||||||
return $this->send('PATCH', $url, [ |
|
||||||
$this->bodyFormat => $data |
|
||||||
]); |
|
||||||
} |
|
||||||
|
|
||||||
public function put(string $url, array $data = []): Response |
|
||||||
{ |
|
||||||
return $this->send('PUT', $url, [ |
|
||||||
$this->bodyFormat => $data |
|
||||||
]); |
|
||||||
} |
|
||||||
|
|
||||||
public function post(string $url, array $data = []): Response |
|
||||||
{ |
|
||||||
return $this->send('POST', $url, [ |
|
||||||
$this->bodyFormat => $data |
|
||||||
]); |
|
||||||
} |
|
||||||
|
|
||||||
//-------------------------------------// |
|
||||||
|
|
||||||
public function accept(string $contentType): Http |
|
||||||
{ |
|
||||||
return $this->withHeaders(['Accept' => $contentType]); |
|
||||||
} |
|
||||||
|
|
||||||
public function acceptJson(): Http |
|
||||||
{ |
|
||||||
return $this->accept('application/json'); |
|
||||||
} |
|
||||||
|
|
||||||
public function asForm(): Http |
|
||||||
{ |
|
||||||
return $this->bodyFormat('form_params') |
|
||||||
->contentType('application/x-www-form-urlencoded'); |
|
||||||
} |
|
||||||
|
|
||||||
public function asJson(): Http |
|
||||||
{ |
|
||||||
return $this->bodyFormat('json') |
|
||||||
->contentType('application/json'); |
|
||||||
} |
|
||||||
|
|
||||||
public function bodyFormat(string $format): Http |
|
||||||
{ |
|
||||||
$this->bodyFormat = $format; |
|
||||||
return $this; |
|
||||||
} |
|
||||||
|
|
||||||
public function contentType(string $type): Http |
|
||||||
{ |
|
||||||
return $this->withHeaders(['Content-Type' => $type]); |
|
||||||
} |
|
||||||
|
|
||||||
public function withBody(string $content, string $contentType): Http |
|
||||||
{ |
|
||||||
$this->bodyFormat('body'); |
|
||||||
|
|
||||||
$this->bodyContent = $content; |
|
||||||
|
|
||||||
$this->contentType($contentType); |
|
||||||
|
|
||||||
return $this; |
|
||||||
} |
|
||||||
|
|
||||||
public function withHeaders(array $headers): Http |
|
||||||
{ |
|
||||||
$this->options = array_merge_recursive($this->options, [ |
|
||||||
'headers' => $headers, |
|
||||||
]); |
|
||||||
|
|
||||||
return $this; |
|
||||||
} |
|
||||||
|
|
||||||
public function withToken(string $token): Http |
|
||||||
{ |
|
||||||
$this->withHeaders(['Authorization' => 'Bearer ' . trim($token)]); |
|
||||||
return $this; |
|
||||||
} |
|
||||||
|
|
||||||
//-------------------------------------// |
|
||||||
|
|
||||||
public function send(string $method, string $url, array $options = []): Response |
|
||||||
{ |
|
||||||
// Format headers |
|
||||||
$headers = []; |
|
||||||
if (_exists($this->options, 'headers')) { |
|
||||||
foreach ($this->options['headers'] as $key => $value) { |
|
||||||
$headers[] = "$key: $value"; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// Fill body content |
|
||||||
switch ($this->bodyFormat) { |
|
||||||
case 'body': |
|
||||||
break; |
|
||||||
case 'json': |
|
||||||
if (_exists($options, 'json')) { |
|
||||||
$this->bodyContent = json_encode($options['json']); |
|
||||||
} |
|
||||||
break; |
|
||||||
case 'form_params': |
|
||||||
if (_exists($options, 'form_params')) { |
|
||||||
$this->bodyContent = http_build_query($options['form_params']); |
|
||||||
} |
|
||||||
break; |
|
||||||
} |
|
||||||
|
|
||||||
// Send HTTP request |
|
||||||
$curl = curl_init(); |
|
||||||
curl_setopt($curl, CURLOPT_URL, $url); |
|
||||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); |
|
||||||
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); |
|
||||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->bodyContent); |
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); |
|
||||||
$response = curl_exec($curl); |
|
||||||
curl_close($curl); |
|
||||||
|
|
||||||
// On failed requests |
|
||||||
if (!$response) { |
|
||||||
$response = ''; |
|
||||||
} |
|
||||||
|
|
||||||
return new Response($response); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,21 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
namespace App\Classes\Http; |
|
||||||
|
|
||||||
class Response { |
|
||||||
|
|
||||||
private string $response; |
|
||||||
|
|
||||||
public function __construct(string $response) |
|
||||||
{ |
|
||||||
$this->response = $response; |
|
||||||
} |
|
||||||
|
|
||||||
//-------------------------------------// |
|
||||||
|
|
||||||
public function body(): string |
|
||||||
{ |
|
||||||
return $this->response; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
Loading…
Reference in new issue