Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 19
Common
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
90
0.00% covered (danger)
0.00%
0 / 19
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 send
0.00% covered (danger)
0.00%
0 / 1
56
0.00% covered (danger)
0.00%
0 / 16
 replaceId
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
1<?php
2namespace Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Traits;
3
4use Illuminate\Support\Facades\Log;
5use Qmp\Laravel\CDNApi\Cdn\AbstractProvider;
6use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\AbstractObject;
7use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Alias;
8use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Referrer;
9use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Stats;
10use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Zone;
11
12trait Common
13{
14    protected $api;
15
16    protected $urls = [
17        'list_zone' => ['get' => 'zones.json'],
18        'view_zone' => ['get' => 'zones/{id}.json'],
19        'add_zone' => ['post' => 'zones.json'],
20        'edit_zone' => ['put' => 'zones/{id}.json'],
21        'delete_zone' => ['delete' => 'zones/{id}.json'],
22
23        'purge_zone_cache' => ['get' => 'zones/purge/{id}.json'],
24        'purge_zone_url' => ['delete' => 'zones/purgeurl/{id}.json'],
25        'purge_zone_tag' => ['delete' => 'zones/purgetag/{id}.json'],
26
27        'list_zone_aliases' => ['get' => 'zonealiases.json'],
28        'add_zone_alias' => ['post' => 'zonealiases.json'],
29        'edit_zone_alias' => ['put' => 'zonealiases/{id}.json'],
30        'delete_zone_alias' => ['delete' => 'zonealiases/{id}.json'],
31
32        'list_zone_referrers' => ['get' => 'zonereferrers.json'],
33        'add_zone_referrer' => ['post' => 'zonereferrers.json'],
34        'edit_zone_referrer' => ['put' => 'zonereferrers/{id}.json'],
35        'delete_zone_referrer' => ['delete' => 'zonereferrers/{id}.json'],
36
37        'traffic_stats' => ['get' => 'reports/traffic.json'],
38        'storage_stats' => ['get' => 'reports/storage.json'],
39        'status_stats' => ['get' => 'reports/statestats.json'],
40        'credits_stats' => ['get' => 'reports/credits.json'],
41    ];
42
43    public function __construct()
44    {
45        $this->api = resolve(\KeyCDN::class);
46    }
47
48    protected function send(string $action, AbstractObject $data = null)
49    {
50        if (!isset($this->urls[$action])) {
51            throw new \Exception('Action ' . $action . ' does not exist');
52        }
53
54        $method = array_key_first($this->urls[$action]);
55        $url = $this->urls[$action][$method];
56
57        if ($data && $data->getId() !== null) {
58            $url = $this->replaceId($url, $data->getId());
59        }
60
61        if (!$data) {
62            $parameters = [];
63        } else {
64            $parameters = $data->all();
65        }
66
67        if (!empty($parameters)) {
68            $result = $this->api->$method($url, $parameters);
69        } else {
70            $result = $this->api->$method($url);
71        }
72
73        try {
74            return json_decode($result, true);
75        } catch (\Exception $exception) {
76            Log::debug('Unable to decode json:' . var_export(['result' => $result, 'message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
77            return $result;
78        }
79    }
80
81    protected function replaceId(string $url, $id)
82    {
83        return str_replace('{id}', $id, $url);
84    }
85
86
87
88}