1: <?php
2:
3: namespace Cloudflare\Zone\WAF\Packages;
4:
5: use Cloudflare\Api;
6: use Cloudflare\Zone;
7: use Cloudflare\Zone\WAF;
8: use Cloudflare\Zone\WAF\Packages;
9:
10: /**
11: * CloudFlare API wrapper
12: *
13: * WAF Rule Groups properties
14: *
15: * @author James Bell <[email protected]>
16: *
17: * @version 1
18: */
19: class Groups extends Api
20: {
21: /**
22: * Default permissions level
23: *
24: * @var array
25: */
26: protected $permission_level = ['read' => '#zone:read', 'edit' => '#zone:edit'];
27:
28: /**
29: * List rule groups (permission needed: #zone:read)
30: * Search, list, and sort rule groups contained within a package
31: *
32: * @param string $zone_identifier
33: * @param string $package_identifier
34: * @param string|null $name Name of the firewall rule group
35: * @param string|null $mode Whether or not the rules contained within this group are configurable/usable
36: * @param int|null $rules_count How many rules are contained within this group
37: * @param int|null $page Page number of paginated results
38: * @param int|null $per_page Number of groups per page
39: * @param string|null $order Field to order groups by
40: * @param string|null $direction Direction to order groups
41: * @param string|null $match Whether to match all search requirements or at least one (any)
42: */
43: public function groups($zone_identifier, $package_identifier, $name = null, $mode = null, $rules_count = null, $page = null, $per_page = null, $order = null, $direction = null, $match = null)
44: {
45: $data = [
46: 'name' => $name,
47: 'mode' => $mode,
48: 'rules_count' => $rules_count,
49: 'page' => $page,
50: 'per_page' => $per_page,
51: 'order' => $order,
52: 'direction' => $direction,
53: 'match' => $match,
54: ];
55:
56: return $this->get('/zones/'.$zone_identifier.'/firewall/waf/packages/'.$package_identifier.'/groups', $data);
57: }
58:
59: /**
60: * Rule group info (permission needed: #zone:read)
61: * Get a single rule group
62: *
63: * @param string $zone_identifier
64: * @param string $package_identifier
65: * @param string $identifier
66: */
67: public function info($zone_identifier, $package_identifier, $identifier)
68: {
69: return $this->get('/zones/'.$zone_identifier.'/firewall/waf/packages/'.$package_identifier.'/groups/'.$identifier);
70: }
71:
72: /**
73: * Update Rule group (permission needed: #zone:edit)
74: * Update the state of a rule group
75: *
76: * @param string $zone_identifier
77: * @param string $package_identifier
78: * @param string $identifier
79: * @param string|null $mode Whether or not the rules contained within this group are configurable/usable
80: */
81: public function update($zone_identifier, $package_identifier, $identifier, $mode = null)
82: {
83: $data = [
84: 'mode' => $mode,
85: ];
86:
87: return $this->patch('/zones/'.$zone_identifier.'/firewall/waf/packages/'.$package_identifier.'/groups/'.$identifier, $data);
88: }
89: }
90: