Completed
Push — develop ( 136153...525928 )
by Nate
03:34
created

ContactListContacts::defaultTransformer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 13
ccs 0
cts 5
cp 0
rs 9.8333
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://flipboxfactory.com/software/hubspot/license
6
 * @link       https://www.flipboxfactory.com/software/hubspot/
7
 */
8
9
namespace flipbox\hubspot\services\resources;
10
11
use flipbox\hubspot\builders\ContactListContactsBuilder;
12
use flipbox\hubspot\builders\ObjectBuilderInterface;
13
use flipbox\hubspot\connections\ConnectionInterface;
14
use flipbox\hubspot\criteria\ContactListContactsCriteria;
15
use flipbox\hubspot\criteria\ObjectCriteriaInterface;
16
use flipbox\hubspot\helpers\CacheHelper;
17
use flipbox\hubspot\helpers\ConnectionHelper;
18
use flipbox\hubspot\helpers\TransformerHelper;
19
use flipbox\hubspot\HubSpot;
20
use flipbox\hubspot\pipeline\Resource;
21
use flipbox\hubspot\services\resources\traits\ReadObjectTrait;
22
use flipbox\hubspot\transformers\collections\TransformerCollectionInterface;
23
use flipbox\hubspot\transformers\DynamicModelSuccess;
24
use Flipbox\Relay\Builder\RelayBuilderInterface;
25
use Flipbox\Relay\HubSpot\Builder\Resources\ContactList\Contacts\Add;
26
use Flipbox\Relay\HubSpot\Builder\Resources\ContactList\Contacts\All;
27
use Flipbox\Relay\HubSpot\Builder\Resources\ContactList\Contacts\Remove;
28
use League\Pipeline\PipelineBuilderInterface;
29
use Psr\Http\Message\ResponseInterface;
30
use Psr\SimpleCache\CacheInterface;
31
use yii\base\Component;
32
33
/**
34
 * @author Flipbox Factory <[email protected]>
35
 * @since 1.0.0
36
 */
37
class ContactListContacts extends Component
38
{
39
    use ReadObjectTrait;
40
41
    /**
42
     * The HubSpot Resource name
43
     */
44
    const HUBSPOT_RESOURCE = 'contactListContacts';
45
46
    /**
47
     * @inheritdoc
48
     */
49
    public static function defaultTransformer()
50
    {
51
        return [
52
            'class' => DynamicTransformerCollection::class,
53
            'handle' => self::HUBSPOT_RESOURCE,
54
            'transformers' => [
55
                TransformerCollectionInterface::SUCCESS_KEY => [
56
                    'class' => DynamicModelSuccess::class,
57
                    'resource' => self::HUBSPOT_RESOURCE
58
                ]
59
            ]
60
        ];
61
    }
62
63
    /**
64
     * @param array $config
65
     * @return ObjectCriteriaInterface
66
     */
67
    public function getCriteria(array $config = []): ObjectCriteriaInterface
68
    {
69
        return new ContactListContactsCriteria($config);
70
    }
71
72
    /**
73
     * @param array $config
74
     * @return ObjectBuilderInterface
75
     */
76
    public function getBuilder(array $config = []): ObjectBuilderInterface
77
    {
78
        return new ContactListContactsBuilder($config);
79
    }
80
81
    /**
82
     * @inheritdoc
83
     */
84
    protected static function readRelayBuilderClass(): string
85
    {
86
        return All::class;
87
    }
88
89
    /**
90
     * @inheritdoc
91
     */
92
    protected static function addRelayBuilderClass(): string
93
    {
94
        return Add::class;
95
    }
96
97
    /**
98
     * @inheritdoc
99
     */
100
    protected static function removeRelayBuilderClass(): string
101
    {
102
        return Remove::class;
103
    }
104
105
106
    /*******************************************
107
     * ADD
108
     *******************************************/
109
110
    /**
111
     * @param ObjectBuilderInterface $builder
112
     * @param ConnectionInterface|string|null $connection
113
     * @param CacheInterface|string|null $cache
114
     * @param TransformerCollectionInterface|array|null $transformer
115
     * @param null $source
116
     * @return mixed
117
     * @throws \yii\base\InvalidConfigException
118
     */
119
    public function add(
120
        ObjectBuilderInterface $builder,
121
        ConnectionInterface $connection = null,
122
        CacheInterface $cache = null,
123
        TransformerCollectionInterface $transformer = null,
124
        $source = null
125
    ) {
126
        return $this->rawAdd(
127
            $builder->getId(),
128
            $builder->getPayload(),
129
            $connection,
130
            $cache,
131
            $transformer,
132
            $source
133
        );
134
    }
135
136
    /**
137
     * @param string $id
138
     * @param array $payload
139
     * @param ConnectionInterface|string|null $connection
140
     * @param CacheInterface|string|null $cache
141
     * @param TransformerCollectionInterface|array|null $transformer
142
     * @param null $source
143
     * @return mixed
144
     * @throws \yii\base\InvalidConfigException
145
     */
146
    public function rawAdd(
147
        string $id,
148
        array $payload,
149
        ConnectionInterface $connection = null,
150
        CacheInterface $cache = null,
151
        TransformerCollectionInterface $transformer = null,
152
        $source = null
153
    ) {
154
        return $this->rawAddPipeline(
155
            $id,
156
            $payload,
157
            $connection,
158
            $cache,
159
            $transformer
160
        )($source);
161
    }
162
163
    /**
164
     * @param ObjectBuilderInterface $builder
165
     * @param ConnectionInterface|string|null $connection
166
     * @param CacheInterface|string|null $cache
167
     * @param TransformerCollectionInterface|array|null $transformer
168
     * @return PipelineBuilderInterface
169
     * @throws \yii\base\InvalidConfigException
170
     */
171
    public function addPipeline(
172
        ObjectBuilderInterface $builder,
173
        ConnectionInterface $connection = null,
174
        CacheInterface $cache = null,
175
        TransformerCollectionInterface $transformer = null
176
    ): PipelineBuilderInterface {
177
        return $this->rawAddPipeline(
178
            $builder->getId(),
179
            $builder->getPayload(),
180
            $connection,
181
            $cache,
182
            $transformer
183
        );
184
    }
185
186
    /**
187
     * @param string $id
188
     * @param array $payload
189
     * @param ConnectionInterface|string|null $connection
190
     * @param CacheInterface|string|null $cache
191
     * @param TransformerCollectionInterface|array|null $transformer
192
     * @return PipelineBuilderInterface
193
     * @throws \yii\base\InvalidConfigException
194
     */
195
    public function rawAddPipeline(
196
        string $id,
197
        array $payload,
198
        ConnectionInterface $connection = null,
199
        CacheInterface $cache = null,
200
        TransformerCollectionInterface $transformer = null
201
    ): PipelineBuilderInterface {
202
        $transformer = TransformerHelper::populateTransformerCollection(
203
            TransformerHelper::resolveCollection($transformer),
204
            [
205
                'resource' => [static::addRelayBuilderClass()]
206
            ]
207
        );
208
209
        return (new Resource(
210
            $this->rawHttpAddRelay(
211
                $id,
212
                $payload,
213
                ConnectionHelper::resolveConnection($connection),
214
                CacheHelper::resolveCache($cache)
215
            ),
216
            $transformer,
217
            HubSpot::getInstance()->getPsrLogger()
218
        ));
219
    }
220
221
    /**
222
     * @param ObjectBuilderInterface $builder
223
     * @param ConnectionInterface|string|null $connection
224
     * @param CacheInterface|string|null $cache
225
     * @return callable
226
     * @throws \yii\base\InvalidConfigException
227
     */
228
    public function httpAddRelay(
229
        ObjectBuilderInterface $builder,
230
        ConnectionInterface $connection = null,
231
        CacheInterface $cache = null
232
    ): callable {
233
        return $this->rawHttpAddRelay(
234
            $builder->getId(),
235
            $builder->getPayload(),
236
            $connection,
237
            $cache
238
        );
239
    }
240
241
    /**
242
     * @param string $id
243
     * @param array $payload
244
     * @param ConnectionInterface|string|null $connection
245
     * @param CacheInterface|string|null $cache
246
     * @return callable
247
     * @throws \yii\base\InvalidConfigException
248
     */
249
    public function rawHttpAddRelay(
250
        string $id,
251
        array $payload,
252
        ConnectionInterface $connection = null,
253
        CacheInterface $cache = null
254
    ): callable {
255
        $class = static::addRelayBuilderClass();
256
257
        /** @var RelayBuilderInterface $builder */
258
        $builder = new $class(
259
            $id,
260
            $payload,
261
            ConnectionHelper::resolveConnection($connection),
262
            CacheHelper::resolveCache($cache),
263
            HubSpot::getInstance()->getPsrLogger()
264
        );
265
266
        return $builder->build();
267
    }
268
269
    /**
270
     * @param ObjectBuilderInterface $builder
271
     * @param ConnectionInterface|string|null $connection
272
     * @param CacheInterface|string|null $cache
273
     * @return ResponseInterface
274
     * @throws \yii\base\InvalidConfigException
275
     */
276
    public function httpAdd(
277
        ObjectBuilderInterface $builder,
278
        ConnectionInterface $connection = null,
279
        CacheInterface $cache = null
280
    ): ResponseInterface {
281
        return $this->rawHttpAdd(
282
            $builder->getId(),
283
            $builder->getPayload(),
284
            $connection,
285
            $cache
286
        );
287
    }
288
289
    /**
290
     * @param string $id
291
     * @param array $payload
292
     * @param ConnectionInterface|string|null $connection
293
     * @param CacheInterface|string|null $cache
294
     * @return ResponseInterface
295
     * @throws \yii\base\InvalidConfigException
296
     */
297
    public function rawHttpAdd(
298
        string $id,
299
        array $payload,
300
        ConnectionInterface $connection = null,
301
        CacheInterface $cache = null
302
    ): ResponseInterface {
303
        return $this->rawHttpAddRelay(
304
            $id,
305
            $payload,
306
            $connection,
307
            $cache
308
        )();
309
    }
310
311
312
    /*******************************************
313
     * REMOVE
314
     *******************************************/
315
316
    /**
317
     * @param ObjectBuilderInterface $builder
318
     * @param ConnectionInterface|string|null $connection
319
     * @param CacheInterface|string|null $cache
320
     * @param TransformerCollectionInterface|array|null $transformer
321
     * @param null $source
322
     * @return mixed
323
     * @throws \yii\base\InvalidConfigException
324
     */
325
    public function remove(
326
        ObjectBuilderInterface $builder,
327
        ConnectionInterface $connection = null,
328
        CacheInterface $cache = null,
329
        TransformerCollectionInterface $transformer = null,
330
        $source = null
331
    ) {
332
        return $this->rawRemove(
333
            $builder->getId(),
334
            $builder->getPayload(),
335
            $connection,
336
            $cache,
337
            $transformer,
338
            $source
339
        );
340
    }
341
342
    /**
343
     * @param string $id
344
     * @param array $payload
345
     * @param ConnectionInterface|string|null $connection
346
     * @param CacheInterface|string|null $cache
347
     * @param TransformerCollectionInterface|array|null $transformer
348
     * @param null $source
349
     * @return mixed
350
     * @throws \yii\base\InvalidConfigException
351
     */
352
    public function rawRemove(
353
        string $id,
354
        array $payload,
355
        ConnectionInterface $connection = null,
356
        CacheInterface $cache = null,
357
        TransformerCollectionInterface $transformer = null,
358
        $source = null
359
    ) {
360
        return $this->rawRemovePipeline(
361
            $id,
362
            $payload,
363
            $connection,
364
            $cache,
365
            $transformer
366
        )($source);
367
    }
368
369
    /**
370
     * @param ObjectBuilderInterface $builder
371
     * @param ConnectionInterface|string|null $connection
372
     * @param CacheInterface|string|null $cache
373
     * @param TransformerCollectionInterface|array|null $transformer
374
     * @return PipelineBuilderInterface
375
     * @throws \yii\base\InvalidConfigException
376
     */
377
    public function removePipeline(
378
        ObjectBuilderInterface $builder,
379
        ConnectionInterface $connection = null,
380
        CacheInterface $cache = null,
381
        TransformerCollectionInterface $transformer = null
382
    ): PipelineBuilderInterface {
383
        return $this->rawRemovePipeline(
384
            $builder->getId(),
385
            $builder->getPayload(),
386
            $connection,
387
            $cache,
388
            $transformer
389
        );
390
    }
391
392
    /**
393
     * @param string $id
394
     * @param array $payload
395
     * @param ConnectionInterface|string|null $connection
396
     * @param CacheInterface|string|null $cache
397
     * @param TransformerCollectionInterface|array|null $transformer
398
     * @return PipelineBuilderInterface
399
     * @throws \yii\base\InvalidConfigException
400
     */
401
    public function rawRemovePipeline(
402
        string $id,
403
        array $payload,
404
        ConnectionInterface $connection = null,
405
        CacheInterface $cache = null,
406
        TransformerCollectionInterface $transformer = null
407
    ): PipelineBuilderInterface {
408
        $transformer = TransformerHelper::populateTransformerCollection(
409
            TransformerHelper::resolveCollection($transformer),
410
            [
411
                'resource' => [static::removeRelayBuilderClass()]
412
            ]
413
        );
414
415
        return (new Resource(
416
            $this->rawHttpRemoveRelay(
417
                $id,
418
                $payload,
419
                ConnectionHelper::resolveConnection($connection),
420
                CacheHelper::$cache($connection)
421
            ),
422
            $transformer,
423
            HubSpot::getInstance()->getPsrLogger()
424
        ));
425
    }
426
427
    /**
428
     * @param ObjectBuilderInterface $builder
429
     * @param ConnectionInterface|string|null $connection
430
     * @param CacheInterface|string|null $cache
431
     * @return callable
432
     * @throws \yii\base\InvalidConfigException
433
     */
434
    public function httpRemoveRelay(
435
        ObjectBuilderInterface $builder,
436
        ConnectionInterface $connection = null,
437
        CacheInterface $cache = null
438
    ): callable {
439
        return $this->rawHttpRemoveRelay(
440
            $builder->getId(),
441
            $builder->getPayload(),
442
            $connection,
443
            $cache
444
        );
445
    }
446
447
    /**
448
     * @param string $id
449
     * @param array $payload
450
     * @param ConnectionInterface|string|null $connection
451
     * @param CacheInterface|string|null $cache
452
     * @return callable
453
     * @throws \yii\base\InvalidConfigException
454
     */
455
    public function rawHttpRemoveRelay(
456
        string $id,
457
        array $payload,
458
        ConnectionInterface $connection = null,
459
        CacheInterface $cache = null
460
    ): callable {
461
        $class = static::removeRelayBuilderClass();
462
463
        /** @var RelayBuilderInterface $builder */
464
        $builder = new $class(
465
            $id,
466
            $payload,
467
            ConnectionHelper::resolveConnection($connection),
468
            CacheHelper::resolveCache($cache),
469
            HubSpot::getInstance()->getPsrLogger()
470
        );
471
472
        return $builder->build();
473
    }
474
475
    /**
476
     * @param ObjectBuilderInterface $builder
477
     * @param ConnectionInterface|string|null $connection
478
     * @param CacheInterface|string|null $cache
479
     * @return ResponseInterface
480
     * @throws \yii\base\InvalidConfigException
481
     */
482
    public function httpRemove(
483
        ObjectBuilderInterface $builder,
484
        ConnectionInterface $connection = null,
485
        CacheInterface $cache = null
486
    ): ResponseInterface {
487
        return $this->rawHttpRemove(
488
            $builder->getId(),
489
            $builder->getPayload(),
490
            $connection,
491
            $cache
492
        );
493
    }
494
495
    /**
496
     * @param string $id
497
     * @param array $payload
498
     * @param ConnectionInterface|string|null $connection
499
     * @param CacheInterface|string|null $cache
500
     * @return ResponseInterface
501
     * @throws \yii\base\InvalidConfigException
502
     */
503
    public function rawHttpRemove(
504
        string $id,
505
        array $payload,
506
        ConnectionInterface $connection = null,
507
        CacheInterface $cache = null
508
    ): ResponseInterface {
509
        return $this->rawHttpRemoveRelay(
510
            $id,
511
            $payload,
512
            $connection,
513
            $cache
514
        )();
515
    }
516
}
517