1: <?php
2:
3: namespace Cloudflare\Organizations;
4:
5: use Cloudflare\Api;
6: use Cloudflare\Organizations;
7:
8: /**
9: * CloudFlare API wrapper
10: *
11: * Virtual DNS (Organizations)
12: * Organizations-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 an organization
30: *
31: * @param string $organization_identifier organization_identifier tag
32: */
33: public function clusters($organization_identifier)
34: {
35: return $this->get('/organizations/'.$organization_identifier.'/virtual_dns');
36: }
37:
38: /**
39: * Create a Virtual DNS Cluster (permission needed: #dns_records:edit)
40: * Create a configured Virtual DNS Cluster
41: *
42: * @param string $organization_identifier organization_identifier tag
43: * @param string $name Virtual DNS Cluster Name
44: * @param array $origin_ips
45: * @param int|null $minimum_cache_ttl Minimum DNS Cache TTL
46: * @param int|null $maximum_cache_ttl Maximum DNS Cache TTL
47: * @param bool|null $deprecate_any_request Deprecate the response to ANY requests
48: */
49: public function create($organization_identifier, $name, $origin_ips, $minimum_cache_ttl = null, $maximum_cache_ttl = null, $deprecate_any_request = null)
50: {
51: $data = [
52: 'name' => $name,
53: 'origin_ips' => $origin_ips,
54: 'minimum_cache_ttl' => $minimum_cache_ttl,
55: 'maximum_cache_ttl' => $maximum_cache_ttl,
56: 'deprecate_any_request' => $deprecate_any_request,
57: ];
58:
59: return $this->post('/organizations/'.$organization_identifier.'/virtual_dns', $data);
60: }
61:
62: /**
63: * Get a Virtual DNS Cluster (permission needed: #dns_records:read)
64: * List a single configured Virtual DNS clusters for an organization
65: *
66: * @param string $organization_identifier organization_identifier tag
67: * @param string $identifier identifier tag
68: */
69: public function cluster($organization_identifier, $identifier)
70: {
71: return $this->get('/organizations/'.$organization_identifier.'/virtual_dns/'.$identifier);
72: }
73:
74: /**
75: * Modify a Virtual DNS Cluster
76: * Modify a Virtual DNS Cluster configuration (permission needed: #dns_records:edit)
77: *
78: * @param string $organization_identifier organization_identifier tag
79: * @param string $identifier identifier tag
80: * @param string $name Virtual DNS Cluster Name
81: * @param array $origin_ips
82: * @param int $minimum_cache_ttl Minimum DNS Cache TTL
83: * @param int $maximum_cache_ttl Maximum DNS Cache TTL
84: * @param bool $deprecate_any_request Deprecate the response to ANY requests
85: */
86: public function modify($organization_identifier, $identifier, $name, $origin_ips, $minimum_cache_ttl, $maximum_cache_ttl, $deprecate_any_request)
87: {
88: $data = [
89: 'name' => $name,
90: 'origin_ips' => $origin_ips,
91: 'minimum_cache_ttl' => $minimum_cache_ttl,
92: 'maximum_cache_ttl' => $maximum_cache_ttl,
93: 'deprecate_any_request' => $deprecate_any_request,
94: ];
95:
96: return $this->patch('/organizations/'.$organization_identifier.'/virtual_dns/'.$identifier, $data);
97: }
98:
99: /**
100: * Delete a Virtual DNS Cluster (permission needed: #dns_records:edit)
101: * Delete a configured Virtual DNS cluster
102: *
103: * @param string $organization_identifier organization_identifier tag
104: * @param string $identifier identifier tag
105: */
106: public function delete_cluster($organization_identifier, $identifier)
107: {
108: return $this->delete('/organizations/'.$organization_identifier.'/virtual_dns/'.$identifier);
109: }
110: }
111: