1 | <?php |
||||
2 | |||||
3 | declare(strict_types=1); |
||||
4 | /** |
||||
5 | * BunqImport.php |
||||
6 | * Copyright (c) 2020 [email protected]. |
||||
7 | * |
||||
8 | * This file is part of the Firefly III bunq importer |
||||
9 | * (https://github.com/firefly-iii/bunq-importer). |
||||
10 | * |
||||
11 | * This program is free software: you can redistribute it and/or modify |
||||
12 | * it under the terms of the GNU Affero General Public License as |
||||
13 | * published by the Free Software Foundation, either version 3 of the |
||||
14 | * License, or (at your option) any later version. |
||||
15 | * |
||||
16 | * This program is distributed in the hope that it will be useful, |
||||
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
19 | * GNU Affero General Public License for more details. |
||||
20 | * |
||||
21 | * You should have received a copy of the GNU Affero General Public License |
||||
22 | * along with this program. If not, see <https://www.gnu.org/licenses/>. |
||||
23 | */ |
||||
24 | |||||
25 | namespace App\Console\Commands; |
||||
26 | |||||
27 | use App\Console\HaveAccess; |
||||
28 | use App\Console\StartDownload; |
||||
29 | use App\Console\StartSync; |
||||
30 | use App\Console\VerifyJSON; |
||||
31 | use Illuminate\Console\Command; |
||||
32 | |||||
33 | /** |
||||
34 | * Class BunqImport. |
||||
35 | */ |
||||
36 | class BunqImport extends Command |
||||
37 | { |
||||
38 | use HaveAccess, VerifyJSON, StartDownload, StartSync; |
||||
39 | /** |
||||
40 | * The console command description. |
||||
41 | * |
||||
42 | * @var string |
||||
43 | */ |
||||
44 | protected $description = 'Import from bunq using a pre-defined configuration file.'; |
||||
45 | /** @var string */ |
||||
46 | protected $downloadIdentifier; |
||||
47 | /** |
||||
48 | * The name and signature of the console command. |
||||
49 | * |
||||
50 | * @var string |
||||
51 | */ |
||||
52 | protected $signature = 'bunq:import {config : The JSON configuration file}'; |
||||
53 | |||||
54 | /** |
||||
55 | * Create a new command instance. |
||||
56 | * |
||||
57 | * @return void |
||||
58 | */ |
||||
59 | public function __construct() |
||||
60 | { |
||||
61 | parent::__construct(); |
||||
62 | } |
||||
63 | |||||
64 | /** |
||||
65 | * Execute the console command. |
||||
66 | * |
||||
67 | * @return int |
||||
68 | */ |
||||
69 | public function handle(): int |
||||
70 | { |
||||
71 | $access = $this->haveAccess(); |
||||
72 | if (false === $access) { |
||||
73 | $this->error('Could not connect to your local Firefly III instance.'); |
||||
74 | |||||
75 | return 1; |
||||
76 | } |
||||
77 | |||||
78 | $this->info(sprintf('Welcome to the Firefly III bunq importer, v%s', config('bunq.version'))); |
||||
79 | app('log')->debug(sprintf('Now in %s', __METHOD__)); |
||||
80 | $config = $this->argument('config'); |
||||
81 | |||||
82 | if (!file_exists($config) || (file_exists($config) && !is_file($config))) { |
||||
0 ignored issues
–
show
Bug
introduced
by
Loading history...
It seems like
$config can also be of type string[] ; however, parameter $filename of file_exists() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
83 | $message = sprintf('The importer can\'t import: configuration file "%s" does not exist or could not be read.', $config); |
||||
0 ignored issues
–
show
It seems like
$config can also be of type string[] ; however, parameter $args of sprintf() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
84 | $this->error($message); |
||||
85 | app('log')->error($message); |
||||
86 | |||||
87 | return 1; |
||||
88 | } |
||||
89 | $jsonResult = $this->verifyJSON($config); |
||||
0 ignored issues
–
show
It seems like
$config can also be of type null and string[] ; however, parameter $file of App\Console\Commands\BunqImport::verifyJSON() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
90 | if (false === $jsonResult) { |
||||
91 | $message = 'The importer can\'t import: could not decode the JSON in the config file.'; |
||||
92 | $this->error($message); |
||||
93 | |||||
94 | return 1; |
||||
95 | } |
||||
96 | $configuration = json_decode(file_get_contents($config), true, 512, JSON_THROW_ON_ERROR); |
||||
0 ignored issues
–
show
It seems like
$config can also be of type string[] ; however, parameter $filename of file_get_contents() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
97 | |||||
98 | $this->line('The import routine is about to start.'); |
||||
99 | $this->line('This is invisible and may take quite some time.'); |
||||
100 | $this->line('Once finished, you will see a list of errors, warnings and messages (if applicable).'); |
||||
101 | $this->line('--------'); |
||||
102 | $this->line('Running...'); |
||||
103 | $result = $this->startDownload($configuration); |
||||
104 | if (0 === $result) { |
||||
105 | $this->line('Download from bunq complete.'); |
||||
106 | } |
||||
107 | if (0 !== $result) { |
||||
108 | $this->warn('Download from bunq resulted in errors.'); |
||||
109 | |||||
110 | return $result; |
||||
111 | } |
||||
112 | $secondResult = $this->startSync($configuration); |
||||
113 | if (0 === $secondResult) { |
||||
114 | $this->line('Sync to Firefly III complete.'); |
||||
115 | } |
||||
116 | if (0 !== $secondResult) { |
||||
117 | $this->warn('Sync to Firefly III resulted in errors.'); |
||||
118 | |||||
119 | return $secondResult; |
||||
120 | } |
||||
121 | |||||
122 | return 0; |
||||
123 | } |
||||
124 | } |
||||
125 |