You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuRequest.php 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: robin
  5. * Date: 11/23/15
  6. * Time: 10:56 PM
  7. */
  8. namespace Luticate\Utils;
  9. use GuzzleHttp\Client;
  10. use GuzzleHttp\Exception\ClientException;
  11. use GuzzleHttp\Exception\RequestException;
  12. use Luticate\Utils\Business\LuLog;
  13. use Luticate\Utils\Dbo\LuRequestDbo;
  14. class LuRequest
  15. {
  16. /**
  17. * @param $method
  18. * @param $url
  19. * @param array $get
  20. * @param array $post
  21. * @param array $headers
  22. * @return LuRequestDbo
  23. */
  24. public static function request($method, $url, $get = [], $post = null, $headers = [])
  25. {
  26. $client = new Client();
  27. $options = [
  28. "headers" => $headers,
  29. "form_params" => $post
  30. ];
  31. foreach ($get as $key => $value) {
  32. $url .= (strpos($url, '?') === false ? "?" : "&") . urlencode($key) . "=" . urlencode($value);
  33. }
  34. $response = null;
  35. try {
  36. $response = $client->request($method, $url, $options);
  37. } catch (ClientException $e) {
  38. $response = $e->getResponse();
  39. LuLog::log($response->getBody());
  40. LuLog::log($e);
  41. } catch (RequestException $e) {
  42. $response = $e->getResponse();
  43. LuLog::log($response->getBody());
  44. LuLog::log($e);
  45. } catch (\Exception $e) {
  46. LuLog::log($e);
  47. }
  48. if (!is_null($response)) {
  49. $body = json_decode($response->getBody(), true);
  50. $request = LuRequestDbo::jsonDeserialize($body);
  51. $request->setStatusCode($response->getStatusCode());
  52. return $request;
  53. }
  54. $request = new LuRequestDbo();
  55. $request->setMessage("Failed to parse response");
  56. $request->setStatusCode(500);
  57. return $request;
  58. }
  59. public static function proxy($method, $url, $get = [], $post = null, $headers = [])
  60. {
  61. $response = LuRequest::request($method, $url, $get, $post, $headers);
  62. if ($response->getStatusCode() != 200) {
  63. abort($response->getStatusCode(), $response->getMessage());
  64. }
  65. return $response->getData();
  66. }
  67. }