Я хотел бы загрузить клиент Guzzle по умолчанию для соединения с Github. В настоящее время я настраиваю клиента по умолчанию в контроллере следующим образом:
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->client = new Client([
'base_uri' => 'https://api.github.com',
'headers' => [
'Authorization' => 'token ' . $this->getAccessToken()
]
]);
return $next($request);
});
}
Я обертываю его закрытием промежуточного программного обеспечения, потому что в противном случае вошедший в данный момент пользователь еще не доступен. getAccessToken
нужен Auth::user
,
Как бы я переписал это универсальному клиенту для повторного использования? Судя по документации от Laravel, хорошей идеей может быть GithubGuzzleClient
в контейнер через ServiceProvider
:
https://laravel.com/docs/5.5/providers#writing-service-providers
Это похоже на ServiceProviders
связаны в контейнер еще до того, как промежуточное программное обеспечение будет запущено. Так как бы я настроить общий ServiceProvider
который также может получить доступ к зарегистрированному пользователю, чтобы установить правильное Authorization
заголовок на свежем экземпляре клиента?
редактировать
После некоторой проверки документа кажется, что это можно сделать только через промежуточное ПО. Я думаю, было бы целесообразно создать промежуточное программное обеспечение, которое внедряет предварительно настроенный Guzzle
клиент, так как на данный момент я должен иметь Auth::user
если мое специальное промежуточное ПО работает последним в цепочке.
Было бы даже неплохо создать группу промежуточного программного обеспечения для всех маршрутов, которые нуждаются в этом Guzzle
экземпляр, который был предопределен для вызовов Github API.
Если кто-нибудь знает лучший способ, пожалуйста, дайте мне знать.
Задача ещё не решена.
Других решений пока нет …