GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( e4b67a...d8327a )
by Andreas
03:56
created

ImportConsumer::consume()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 30
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 4
eloc 20
c 1
b 0
f 1
nc 4
nop 1
dl 0
loc 30
rs 9.6
1
<?php
2
declare(strict_types=1);
3
/**
4
 */
5
6
namespace CommerceLeague\ActiveCampaign\MessageQueue\Contact;
7
8
use CommerceLeague\ActiveCampaign\Api\Data\ContactInterface;
9
use CommerceLeague\ActiveCampaign\Helper\Client as ClientHelper;
10
use CommerceLeague\ActiveCampaign\Logger\Logger;
11
use CommerceLeague\ActiveCampaign\MessageQueue\Topics;
12
use CommerceLeague\ActiveCampaign\Model\ResourceModel\Contact as ContactResource;
13
use CommerceLeague\ActiveCampaignApi\Exception\HttpException;
14
use Magento\Framework\Exception\LocalizedException;
15
use Magento\Framework\MessageQueue\PublisherInterface;
16
17
/**
18
 * Class ImportConsumer
19
 */
20
class ImportConsumer
21
{
22
    /**
23
     * @var ClientHelper
24
     */
25
    private $clientHelper;
26
27
    /**
28
     * @var Logger
29
     */
30
    private $logger;
31
32
    /**
33
     * @var ContactResource
34
     */
35
    private $contactResource;
36
37
    /**
38
     * @var ImportMessageBuilder
39
     */
40
    private $importMessageBuilder;
41
42
    /**
43
     * @var PublisherInterface
44
     */
45
    private $publisher;
46
47
    /**
48
     * @param ClientHelper $clientHelper
49
     * @param Logger $logger
50
     * @param ContactResource $contactResource
51
     * @param ImportMessageBuilder $importMessageBuilder
52
     * @param PublisherInterface $publisher
53
     */
54
    public function __construct(
55
        ClientHelper $clientHelper,
56
        Logger $logger,
57
        ContactResource $contactResource,
58
        ImportMessageBuilder $importMessageBuilder,
59
        PublisherInterface $publisher
60
    ) {
61
        $this->clientHelper = $clientHelper;
62
        $this->logger = $logger;
63
        $this->contactResource = $contactResource;
64
        $this->importMessageBuilder = $importMessageBuilder;
65
        $this->publisher = $publisher;
66
    }
67
68
    /**
69
     * @param ImportMessage $message
70
     */
71
    public function consume(ImportMessage $message): void
72
    {
73
        try {
74
            $page = $this->clientHelper->getContactApi()->listPerPage($message->getLimit(), $message->getOffset());
75
        } catch (HttpException $e) {
76
            $this->logger->err($e->getMessage());
77
            return;
78
        }
79
80
        $contacts = array_map(function (array $item) {
81
            return [
82
                ContactInterface::EMAIL => $item['email'],
83
                ContactInterface::ACTIVE_CAMPAIGN_ID => $item['id']
84
            ];
85
        }, $page->getItems());
86
87
        try {
88
            $this->contactResource->importContacts($contacts);
89
        } catch (LocalizedException $e) {
90
            $this->logger->err($e->getMessage());
91
            return;
92
        }
93
94
        if (!$page->hasNextPage()) {
95
            return;
96
        }
97
98
        $this->publisher->publish(
99
            Topics::CONTACT_IMPORT,
100
            $this->importMessageBuilder->buildNextMessage($message)
101
        );
102
    }
103
}
104