Controller.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Http\Controllers\api\thirdPart\syrius\producer;
  3. use GuzzleHttp\Exception\RequestException;
  4. use Illuminate\Http\Client\ConnectionException;
  5. use Illuminate\Http\Client\Response;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\Cache;
  8. use Illuminate\Support\Facades\Http;
  9. use Illuminate\Support\Facades\Log;
  10. class Controller
  11. {
  12. //string
  13. protected $method;
  14. //string
  15. protected $url;
  16. //array
  17. protected $data = [];
  18. public function response(): ?Response
  19. {
  20. $auth = $this->getAuthentication();
  21. if (!$auth)return null;
  22. $logInfo = [
  23. "param" => $this->data,
  24. "user" => Auth::id(),
  25. "ip" => request()->ip(),
  26. ];
  27. try {
  28. $method = $this->method;
  29. $response = Http::withToken($auth["accessToken"]);
  30. $response->baseUrl(config("api.syrius.base_url"));
  31. if ($method=='post')$response->asJson();
  32. return $response->$method($this->url,$this->data);
  33. }catch (ConnectionException $e){
  34. Log::warning("syrius:连接异常",$logInfo);
  35. }catch (\Exception $e){
  36. Log::warning("syrius:请求异常",$logInfo);
  37. }
  38. return null;
  39. }
  40. public function getAuthentication():?array
  41. {
  42. return (array)Cache::remember("SYRIUS_AUTHENTICATION",86400,function (){
  43. $url = config("api.syrius.base_url").config("api.syrius.request.auth");
  44. try {
  45. $response = Http::withHeaders(["Content-Type"=>'application/json'])->post($url,[
  46. "authFlow" => "AK_SK_AUTH_FLOW",
  47. "attributes" => [
  48. "clientKey" => config("api.syrius.client_id"),
  49. "clientSecret" => config("api.syrius.client_secret")
  50. ],
  51. ]);
  52. $data = json_decode($response->body());
  53. if ($response->status()==200){
  54. return $data;
  55. }else{
  56. Log::warning("syrius:token返回失败",$data);
  57. }
  58. }catch (ConnectionException $e){
  59. Log::warning("syrius:连接异常",["token获取失败"]);
  60. }catch (RequestException $e){
  61. Log::warning("syrius:服务端请求",["token获取失败"]);
  62. }catch (\Exception $e){
  63. Log::warning("syrius:未知异常",["token获取失败"]);
  64. }
  65. return null;
  66. });
  67. }
  68. }