mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
First list existing devices, then try to get a new one.
This commit is contained in:
@@ -187,7 +187,7 @@ class BunqPrerequisites implements PrerequisitesInterface
|
|||||||
*
|
*
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*/
|
*/
|
||||||
private function getExistingDevice(): DeviceServerId
|
private function getExistingDevice(): ?DeviceServerId
|
||||||
{
|
{
|
||||||
Log::debug('Now in getExistingDevice()');
|
Log::debug('Now in getExistingDevice()');
|
||||||
$installationToken = $this->getInstallationToken();
|
$installationToken = $this->getInstallationToken();
|
||||||
@@ -205,7 +205,8 @@ class BunqPrerequisites implements PrerequisitesInterface
|
|||||||
return $device->getId();
|
return $device->getId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new FireflyException('Cannot find existing Server Device that can be used by this instance of Firefly III.');
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -342,13 +343,21 @@ class BunqPrerequisites implements PrerequisitesInterface
|
|||||||
|
|
||||||
return $deviceServerId->data;
|
return $deviceServerId->data;
|
||||||
}
|
}
|
||||||
Log::debug('Device server ID is null, we have to register.');
|
Log::debug('Device server ID is null, we have to find an existing one or register a new one.');
|
||||||
$installationToken = $this->getInstallationToken();
|
$installationToken = $this->getInstallationToken();
|
||||||
$serverPublicKey = $this->getServerPublicKey();
|
$serverPublicKey = $this->getServerPublicKey();
|
||||||
$apiKey = Preferences::getForUser($this->user, 'bunq_api_key', '');
|
$apiKey = Preferences::getForUser($this->user, 'bunq_api_key', '');
|
||||||
|
|
||||||
Log::debug('Going to create new DeviceServerRequest()');
|
// try get the current from a list:
|
||||||
$request = new DeviceServerRequest;
|
$deviceServerId = $this->getExistingDevice();
|
||||||
|
if (null !== $deviceServerId) {
|
||||||
|
Log::debug('Found device server ID in existing devices list.');
|
||||||
|
|
||||||
|
return $deviceServerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log::debug('Going to create new DeviceServerRequest() because nothing found in existing list.');
|
||||||
|
$request = new DeviceServerRequest;
|
||||||
$request->setPrivateKey($this->getPrivateKey());
|
$request->setPrivateKey($this->getPrivateKey());
|
||||||
$request->setDescription('Firefly III v' . config('firefly.version') . ' for ' . $this->user->email);
|
$request->setDescription('Firefly III v' . config('firefly.version') . ' for ' . $this->user->email);
|
||||||
$request->setSecret($apiKey->data);
|
$request->setSecret($apiKey->data);
|
||||||
@@ -363,12 +372,12 @@ class BunqPrerequisites implements PrerequisitesInterface
|
|||||||
} catch (FireflyException $e) {
|
} catch (FireflyException $e) {
|
||||||
Log::error($e->getMessage());
|
Log::error($e->getMessage());
|
||||||
// we really have to quit at this point :(
|
// we really have to quit at this point :(
|
||||||
throw new FireflyException($e->getMessage());
|
//throw new FireflyException($e->getMessage());
|
||||||
}
|
}
|
||||||
if (null === $deviceServerId) {
|
if(is_null($deviceServerId)) {
|
||||||
// try get the current from a list:
|
throw new FireflyException('Was not able to register server with bunq. Please see the log files.');
|
||||||
$deviceServerId = $this->getExistingDevice();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Preferences::setForUser($this->user, 'bunq_device_server_id', $deviceServerId);
|
Preferences::setForUser($this->user, 'bunq_device_server_id', $deviceServerId);
|
||||||
Log::debug(sprintf('Server ID: %s', serialize($deviceServerId)));
|
Log::debug(sprintf('Server ID: %s', serialize($deviceServerId)));
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ namespace FireflyIII\Services\Bunq\Request;
|
|||||||
use FireflyIII\Services\Bunq\Object\DeviceServer;
|
use FireflyIII\Services\Bunq\Object\DeviceServer;
|
||||||
use FireflyIII\Services\Bunq\Token\InstallationToken;
|
use FireflyIII\Services\Bunq\Token\InstallationToken;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
use Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ListDeviceServerRequest.
|
* Class ListDeviceServerRequest.
|
||||||
@@ -40,23 +41,30 @@ class ListDeviceServerRequest extends BunqRequest
|
|||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
$this->devices = new Collection;
|
$this->devices = new Collection;
|
||||||
|
Log::debug('Constructed ListDeviceServerRequest');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws \FireflyIII\Exceptions\FireflyException
|
||||||
*/
|
*/
|
||||||
public function call(): void
|
public function call(): void
|
||||||
{
|
{
|
||||||
|
Log::debug('Now in ListDeviceServerRequest::call()');
|
||||||
$uri = 'device-server';
|
$uri = 'device-server';
|
||||||
$data = [];
|
$data = [];
|
||||||
$headers = $this->getDefaultHeaders();
|
$headers = $this->getDefaultHeaders();
|
||||||
$headers['X-Bunq-Client-Authentication'] = $this->installationToken->getToken();
|
$headers['X-Bunq-Client-Authentication'] = $this->installationToken->getToken();
|
||||||
$response = $this->sendSignedBunqGet($uri, $data, $headers);
|
$response = $this->sendSignedBunqGet($uri, $data, $headers);
|
||||||
|
Log::debug('Returned from sending device-server list request!');
|
||||||
// create device server objects:
|
// create device server objects:
|
||||||
$raw = $this->getArrayFromResponse('DeviceServer', $response);
|
$raw = $this->getArrayFromResponse('DeviceServer', $response);
|
||||||
|
Log::debug(sprintf('Count %d entries in response array.', count($raw)));
|
||||||
|
Log::debug('Full response', $response);
|
||||||
/** @var array $entry */
|
/** @var array $entry */
|
||||||
foreach ($raw as $entry) {
|
foreach ($raw as $entry) {
|
||||||
$this->devices->push(new DeviceServer($entry));
|
$server = new DeviceServer($entry);
|
||||||
|
Log::debug(sprintf('Created server "%s" with IP "%s"', $server->getId()->getId(), $server->getIp()));
|
||||||
|
$this->devices->push($server);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user