ClientFactory.php 814 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. namespace WeWork\Http;
  3. use GuzzleHttp\Client;
  4. use GuzzleHttp\HandlerStack;
  5. use Psr\Log\LoggerInterface;
  6. use WeWork\ApiCache\Token;
  7. class ClientFactory
  8. {
  9. /**
  10. * @param LoggerInterface $logger
  11. * @param Token $token
  12. * @return Client
  13. */
  14. public static function create(LoggerInterface $logger, $token = null)
  15. {
  16. $stack = HandlerStack::create();
  17. $stack->push(Middleware::retry($logger));
  18. $stack->push(Middleware::response());
  19. $stack->push(Middleware::log($logger));
  20. if ($token instanceof Token) {
  21. $stack->push(Middleware::auth($token));
  22. }
  23. return new Client([
  24. 'base_uri' => 'https://qyapi.weixin.qq.com/cgi-bin/',
  25. 'handler' => $stack
  26. ]);
  27. }
  28. }