1: <?php
2:
3: namespace Cloudflare\User;
4:
5: use Cloudflare\Api;
6: use Cloudflare\User;
7:
8: /**
9: * CloudFlare API wrapper
10: *
11: * Virtual DNS (Users)
12: * User-level Virtual DNS Management
13: *
14: * @author James Bell <[email protected]>
15: *
16: * @version 1
17: */
18: class Virtual_Dns extends Api
19: {
20: /**
21: * Default permissions level
22: *
23: * @var array
24: */
25: protected $permission_level = ['read' => '#dns_records:read', 'edit' => '#dns_records:edit'];
26:
27: /**
28: * Get Virtual DNS Clusters (permission needed: #dns_records:read)
29: * List configured Virtual DNS clusters for a user
30: */
31: public function clusters()
32: {
33: return $this->get('/user/virtual_dns');
34: }
35:
36: /**
37: * Create a Virtual DNS Cluster (permission needed: #dns_records:edit)
38: * Create a configured Virtual DNS Cluster
39: *
40: * @param string $name Virtual DNS Cluster Name
41: * @param array $origin_ips
42: * @param int|null $minimum_cache_ttl Minimum DNS Cache TTL
43: * @param int|null $maximum_cache_ttl Maximum DNS Cache TTL
44: * @param bool|null $deprecate_any_request Deprecate the response to ANY requests
45: */
46: public function create($name, $origin_ips, $minimum_cache_ttl = null, $maximum_cache_ttl = null, $deprecate_any_request = null)
47: {
48: $data = [
49: 'name' => $name,
50: 'origin_ips' => $origin_ips,
51: 'minimum_cache_ttl' => $minimum_cache_ttl,
52: 'maximum_cache_ttl' => $maximum_cache_ttl,
53: 'deprecate_any_request' => $deprecate_any_request,
54: ];
55:
56: return $this->post('/user/virtual_dns', $data);
57: }
58:
59: /**
60: * Get a Virtual DNS Cluster (permission needed: #dns_records:read)
61: * List a single configured Virtual DNS clusters for a user
62: *
63: * @param string $identifier Identifier tag
64: */
65: public function cluster($identifier)
66: {
67: return $this->get('/user/virtual_dns/'.$identifier);
68: }
69:
70: /**
71: * Modify a Virtual DNS Cluster
72: * Modify a Virtual DNS Cluster configuration (permission needed: #dns_records:edit)
73: *
74: * @param string $identifier Identifier tag
75: * @param string $name Virtual DNS Cluster Name
76: * @param array $origin_ips
77: * @param int $minimum_cache_ttl Minimum DNS Cache TTL
78: * @param int $maximum_cache_ttl Maximum DNS Cache TTL
79: * @param bool $deprecate_any_request Deprecate the response to ANY requests
80: */
81: public function modify($identifier, $name, $origin_ips, $minimum_cache_ttl, $maximum_cache_ttl, $deprecate_any_request)
82: {
83: $data = [
84: 'name' => $name,
85: 'origin_ips' => $origin_ips,
86: 'minimum_cache_ttl' => $minimum_cache_ttl,
87: 'maximum_cache_ttl' => $maximum_cache_ttl,
88: 'deprecate_any_request' => $deprecate_any_request,
89: ];
90:
91: return $this->patch('/user/virtual_dns/'.$identifier, $data);
92: }
93:
94: /**
95: * Delete a Virtual DNS Cluster (permission needed: #dns_records:edit)
96: * Delete a configured Virtual DNS cluster
97: *
98: * @param string $identifier Identifier tag
99: */
100: public function delete_cluster($identifier)
101: {
102: return $this->delete('/user/virtual_dns/'.$identifier);
103: }
104: }
105: