HttpClient.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace WeWork\Http;
  3. use GuzzleHttp\Client;
  4. use Psr\Http\Message\StreamInterface;
  5. class HttpClient implements HttpClientInterface
  6. {
  7. /**
  8. * @var Client
  9. */
  10. private $client;
  11. /**
  12. * @param Client $client
  13. */
  14. public function __construct(Client $client)
  15. {
  16. $this->client = $client;
  17. }
  18. /**
  19. * @param string $uri
  20. * @param array $query
  21. * @return array
  22. */
  23. public function get(string $uri, array $query = []): array
  24. {
  25. return $this->client->get($uri, compact('query'))->toArray();
  26. }
  27. /**
  28. * @param string $uri
  29. * @param array $query
  30. * @return StreamInterface
  31. */
  32. public function getStream(string $uri, array $query = []): StreamInterface
  33. {
  34. return $this->client->get($uri, compact('query'))->getBody();
  35. }
  36. /**
  37. * @param string $uri
  38. * @param array $json
  39. * @param array $query
  40. * @return array
  41. */
  42. public function postJson(string $uri, array $json = [], array $query = []): array
  43. {
  44. return $this->client->post($uri, compact('json', 'query'))->toArray();
  45. }
  46. /**
  47. * @param string $uri
  48. * @param string $path
  49. * @param array $query
  50. * @return array
  51. */
  52. public function postFile(string $uri, string $path, array $query = []): array
  53. {
  54. return $this->client->post($uri, array_merge([
  55. 'multipart' => [
  56. [
  57. 'name' => 'media',
  58. 'contents' => fopen($path, 'r')
  59. ]
  60. ]
  61. ], compact('query')))->toArray();
  62. }
  63. }