Code Duplication    Length = 64-68 lines in 2 locations

src/TwitterAds/Campaign/AdvertiserBusinessCategories.php 1 location

@@ 11-78 (lines=68) @@
8
use Hborras\TwitterAdsSDK\TwitterAdsException;
9
10
11
class AdvertiserBusinessCategories
12
{
13
    const RESOURCE_COLLECTION = 'advertiser_business_categories';
14
    const RESOURCE_REPLACE    = '{account_id}';
15
16
    protected $id;
17
    protected $name;
18
    protected $iab_categories;
19
20
    /** @var  TwitterAds $twitterAds */
21
    private $twitterAds;
22
23
    /**
24
     * Feature constructor.
25
     * @param TwitterAds $twitterAds
26
     */
27
    public function __construct(TwitterAds $twitterAds)
28
    {
29
        $this->twitterAds = static::assureApi($twitterAds);
30
    }
31
32
    /**
33
     * @param TwitterAds|null $instance
34
     * @return TwitterAds|null
35
     */
36
    protected static function assureApi(TwitterAds $instance = null)
37
    {
38
        $instance = $instance ?: TwitterAds::instance();
39
        if (!$instance) {
40
            throw new InvalidArgumentException(
41
                'An Api instance must be provided as argument or ' .
42
                'set as instance in the \TwitterAds\Api'
43
            );
44
        }
45
        return $instance;
46
    }
47
48
    /**
49
     * Returns a Cursor instance for a given resource.
50
     *
51
     * @param array $params
52
     *
53
     * @return Cursor
54
     * @throws TwitterAds\Errors\BadRequest
55
     * @throws TwitterAds\Errors\Forbidden
56
     * @throws TwitterAds\Errors\NotAuthorized
57
     * @throws TwitterAds\Errors\NotFound
58
     * @throws TwitterAds\Errors\RateLimit
59
     * @throws TwitterAds\Errors\ServerError
60
     * @throws TwitterAds\Errors\ServiceUnavailable
61
     * @throws TwitterAdsException
62
     */
63
    public function all($params = [])
64
    {
65
        $resource = str_replace(static::RESOURCE_REPLACE, $this->getTwitterAds()->getAccountId(), static::RESOURCE_COLLECTION);
66
        $response = $this->getTwitterAds()->get($resource, $params);
67
68
        return new Cursor($response->getBody()->data, $this->getTwitterAds(), $response->getBody(), $params);
69
    }
70
71
    /**
72
     * @return TwitterAds
73
     */
74
    public function getTwitterAds()
75
    {
76
        return $this->twitterAds;
77
    }
78
}
79

src/TwitterAds/Campaign/Feature.php 1 location

@@ 14-77 (lines=64) @@
11
 * Class Feature
12
 * @package Hborras\TwitterAdsSDK\TwitterAds\Campaign
13
 */
14
class Feature
15
{
16
    const RESOURCE_COLLECTION = 'features';
17
    const RESOURCE_REPLACE    = '{account_id}';
18
19
    /** @var  TwitterAds $twitterAds */
20
    private $twitterAds;
21
22
    /**
23
     * Feature constructor.
24
     * @param TwitterAds $twitterAds
25
     */
26
    public function __construct(TwitterAds $twitterAds)
27
    {
28
        $this->twitterAds = static::assureApi($twitterAds);
29
    }
30
31
    /**
32
     * @param TwitterAds|null $instance
33
     * @return TwitterAds|null
34
     */
35
    protected static function assureApi(TwitterAds $instance = null)
36
    {
37
        $instance = $instance ?: TwitterAds::instance();
38
        if (!$instance) {
39
            throw new InvalidArgumentException(
40
                'An Api instance must be provided as argument or ' .
41
                'set as instance in the \TwitterAds\Api'
42
            );
43
        }
44
        return $instance;
45
    }
46
47
    /**
48
     * Returns a Cursor instance for a given resource.
49
     *
50
     * @param array $params
51
     *
52
     * @return Cursor
53
     * @throws TwitterAds\Errors\BadRequest
54
     * @throws TwitterAds\Errors\Forbidden
55
     * @throws TwitterAds\Errors\NotAuthorized
56
     * @throws TwitterAds\Errors\NotFound
57
     * @throws TwitterAds\Errors\RateLimit
58
     * @throws TwitterAds\Errors\ServerError
59
     * @throws TwitterAds\Errors\ServiceUnavailable
60
     * @throws TwitterAdsException
61
     */
62
    public function all($params = [])
63
    {
64
        $resource = str_replace(static::RESOURCE_REPLACE, $this->getTwitterAds()->getAccountId(), static::RESOURCE_COLLECTION);
65
        $response = $this->getTwitterAds()->get($resource, $params);
66
67
        return new Cursor($response->getBody()->data, $this->getTwitterAds(), $response->getBody(), $params);
68
    }
69
70
    /**
71
     * @return TwitterAds
72
     */
73
    public function getTwitterAds()
74
    {
75
        return $this->twitterAds;
76
    }
77
}
78