Issues (37)

app/Console/StartDownload.php (4 issues)

1
<?php
2
/**
3
 * StartDownload.php
4
 * Copyright (c) 2020 [email protected].
5
 *
6
 * This file is part of the Firefly III bunq importer
7
 * (https://github.com/firefly-iii/bunq-importer).
8
 *
9
 * This program is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU Affero General Public License as
11
 * published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU Affero General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Affero General Public License
20
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
21
 */
22
23
declare(strict_types=1);
24
25
namespace App\Console;
26
27
use App\Bunq\Download\RoutineManager as DownloadRoutineMananger;
28
use App\Exceptions\ImportException;
29
use App\Services\Configuration\Configuration;
30
31
/**
32
 * Trait StartDownload.
33
 */
34
trait StartDownload
35
{
36
    /**
37
     * @param array $configuration
38
     *
39
     * @return int
40
     */
41
    private function startDownload(array $configuration): int
42
    {
43
        app('log')->debug(sprintf('Now in %s', __METHOD__));
44
        $configObject = Configuration::fromFile($configuration);
45
46
        // first download from bunq
47
        $manager = new DownloadRoutineMananger;
48
        try {
49
            $manager->setConfiguration($configObject);
50
        } catch (ImportException $e) {
51
            $this->error($e->getMessage());
0 ignored issues
show
It seems like error() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

51
            $this->/** @scrutinizer ignore-call */ 
52
                   error($e->getMessage());
Loading history...
52
53
            return 1;
54
        }
55
        try {
56
            $manager->start();
57
        } catch (ImportException $e) {
58
            $this->error($e->getMessage());
59
60
            return 1;
61
        }
62
63
        $messages = $manager->getAllMessages();
64
        $warnings = $manager->getAllWarnings();
65
        $errors   = $manager->getAllErrors();
66
67
        if (count($errors) > 0) {
68
            /**
69
             * @var int   $index
70
             * @var array $error
71
             */
72
            foreach ($errors as $index => $error) {
73
                /** @var string $line */
74
                foreach ($error as $line) {
75
                    $this->error(sprintf('ERROR in line     #%d: %s', $index + 1, $line));
76
                }
77
            }
78
        }
79
80
        if (count($warnings) > 0) {
81
            /**
82
             * @var int   $index
83
             * @var array $warning
84
             */
85
            foreach ($warnings as $index => $warning) {
86
                /** @var string $line */
87
                foreach ($warning as $line) {
88
                    $this->warn(sprintf('Warning from line #%d: %s', $index + 1, $line));
0 ignored issues
show
It seems like warn() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

88
                    $this->/** @scrutinizer ignore-call */ 
89
                           warn(sprintf('Warning from line #%d: %s', $index + 1, $line));
Loading history...
89
                }
90
            }
91
        }
92
93
        if (count($messages) > 0) {
94
            /**
95
             * @var int   $index
96
             * @var array $message
97
             */
98
            foreach ($messages as $index => $message) {
99
                /** @var string $line */
100
                foreach ($message as $line) {
101
                    $this->info(sprintf('Message from line #%d: %s', $index + 1, strip_tags($line)));
0 ignored issues
show
It seems like info() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

101
                    $this->/** @scrutinizer ignore-call */ 
102
                           info(sprintf('Message from line #%d: %s', $index + 1, strip_tags($line)));
Loading history...
102
                }
103
            }
104
        }
105
        $this->downloadIdentifier = $manager->getDownloadIdentifier();
0 ignored issues
show
Bug Best Practice introduced by
The property downloadIdentifier does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
106
107
        return 0;
108
    }
109
}
110