. */ declare(strict_types=1); namespace FireflyIII\Services\Spectre\Request; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\SpectreProvider; use FireflyIII\Services\Spectre\Object\Customer; /** * Class CreateLoginRequest */ class CreateLoginRequest extends SpectreRequest { /** @var Customer */ private $customer; /** @var array */ private $mandatoryFields = []; /** @var SpectreProvider */ private $provider; /** * * @throws FireflyException */ public function call(): void { // add mandatory fields to login object $data = [ 'customer_id' => $this->customer->getId(), 'country_code' => $this->provider->country_code, 'provider_code' => $this->provider->code, 'credentials' => $this->buildCredentials(), 'daily_refresh' => true, 'fetch_type' => 'recent', 'include_fake_providers' => true, ]; $uri = '/api/v3/logins'; $response = $this->sendSignedSpectrePost($uri, $data); echo '
'; print_r($response); exit; } /** * @param Customer $customer */ public function setCustomer(Customer $customer): void { $this->customer = $customer; } /** * @param array $mandatoryFields */ public function setMandatoryFields(array $mandatoryFields): void { $this->mandatoryFields = $mandatoryFields; } /** * @param SpectreProvider $provider */ public function setProvider(SpectreProvider $provider): void { $this->provider = $provider; } /** * @return array * @throws FireflyException */ private function buildCredentials(): array { $return = []; /** @var array $requiredField */ foreach ($this->provider->data['required_fields'] as $requiredField) { $fieldName = $requiredField['name']; if (!isset($this->mandatoryFields[$fieldName])) { throw new FireflyException(sprintf('Mandatory field "%s" is missing from job.', $fieldName)); } $return[$fieldName] = $this->mandatoryFields[$fieldName]; } return $return; } }