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   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 31
c 1
b 0
f 1
dl 0
loc 81
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 1
A consume() 0 30 4
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