. */ declare(strict_types=1); namespace FireflyIII\Services\Spectre\Request; use Log; /** * Class ListUserRequest. */ class ListProvidersRequest extends SpectreRequest { /** * @var array */ protected $providers = []; /** * @throws \Exception */ public function call(): void { $hasNextPage = true; $nextId = 0; while ($hasNextPage) { Log::debug(sprintf('Now calling for next_id %d', $nextId)); $parameters = ['include_fake_providers' => 'true', 'include_provider_fields' => 'true', 'from_id' => $nextId]; $uri = '/api/v3/providers?' . http_build_query($parameters); $response = $this->sendSignedSpectreGet($uri, []); // count entries: Log::debug(sprintf('Found %d entries in data-array', count($response['data']))); // extract next ID $hasNextPage = false; if (isset($response['meta']['next_id']) && intval($response['meta']['next_id']) > $nextId) { $hasNextPage = true; $nextId = $response['meta']['next_id']; Log::debug(sprintf('Next ID is now %d.', $nextId)); } else { Log::debug('No next page.'); } // store providers: foreach ($response['data'] as $providerArray) { $providerId = $providerArray['id']; $this->providers[$providerId] = $providerArray; Log::debug(sprintf('Stored provider #%d', $providerId)); } } return; } /** * @return array */ public function getProviders(): array { return $this->providers; } }