PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.3.1
GiveWP – Donation Plugin and Fundraising Platform v3.3.1
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / vendor-prefixed / symfony / http-foundation / RequestMatcher.php
give / vendor / vendor-prefixed / symfony / http-foundation Last commit date
Exception 2 years ago File 2 years ago Session 2 years ago Tests 2 years ago AcceptHeader.php 2 years ago AcceptHeaderItem.php 2 years ago ApacheRequest.php 2 years ago BinaryFileResponse.php 2 years ago Cookie.php 2 years ago ExpressionRequestMatcher.php 2 years ago FileBag.php 2 years ago HeaderBag.php 2 years ago IpUtils.php 2 years ago JsonResponse.php 2 years ago LICENSE 2 years ago ParameterBag.php 2 years ago RedirectResponse.php 2 years ago Request.php 2 years ago RequestMatcher.php 2 years ago RequestMatcherInterface.php 2 years ago RequestStack.php 2 years ago Response.php 2 years ago ResponseHeaderBag.php 2 years ago ServerBag.php 2 years ago StreamedResponse.php 2 years ago
RequestMatcher.php
181 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 *
11 * Modified by impress-org on 23-January-2024 using Strauss.
12 * @see https://github.com/BrianHenryIE/strauss
13 */
14
15 namespace Give\Vendors\Symfony\Component\HttpFoundation;
16
17 /**
18 * RequestMatcher compares a pre-defined set of checks against a Request instance.
19 *
20 * @author Fabien Potencier <fabien@symfony.com>
21 */
22 class RequestMatcher implements RequestMatcherInterface
23 {
24 /**
25 * @var string|null
26 */
27 private $path;
28
29 /**
30 * @var string|null
31 */
32 private $host;
33
34 /**
35 * @var string[]
36 */
37 private $methods = [];
38
39 /**
40 * @var string[]
41 */
42 private $ips = [];
43
44 /**
45 * @var array
46 */
47 private $attributes = [];
48
49 /**
50 * @var string[]
51 */
52 private $schemes = [];
53
54 /**
55 * @param string|null $path
56 * @param string|null $host
57 * @param string|string[]|null $methods
58 * @param string|string[]|null $ips
59 * @param string|string[]|null $schemes
60 */
61 public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = [], $schemes = null)
62 {
63 $this->matchPath($path);
64 $this->matchHost($host);
65 $this->matchMethod($methods);
66 $this->matchIps($ips);
67 $this->matchScheme($schemes);
68
69 foreach ($attributes as $k => $v) {
70 $this->matchAttribute($k, $v);
71 }
72 }
73
74 /**
75 * Adds a check for the HTTP scheme.
76 *
77 * @param string|string[]|null $scheme An HTTP scheme or an array of HTTP schemes
78 */
79 public function matchScheme($scheme)
80 {
81 $this->schemes = null !== $scheme ? array_map('strtolower', (array) $scheme) : [];
82 }
83
84 /**
85 * Adds a check for the URL host name.
86 *
87 * @param string|null $regexp A Regexp
88 */
89 public function matchHost($regexp)
90 {
91 $this->host = $regexp;
92 }
93
94 /**
95 * Adds a check for the URL path info.
96 *
97 * @param string|null $regexp A Regexp
98 */
99 public function matchPath($regexp)
100 {
101 $this->path = $regexp;
102 }
103
104 /**
105 * Adds a check for the client IP.
106 *
107 * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
108 */
109 public function matchIp($ip)
110 {
111 $this->matchIps($ip);
112 }
113
114 /**
115 * Adds a check for the client IP.
116 *
117 * @param string|string[]|null $ips A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
118 */
119 public function matchIps($ips)
120 {
121 $this->ips = null !== $ips ? (array) $ips : [];
122 }
123
124 /**
125 * Adds a check for the HTTP method.
126 *
127 * @param string|string[]|null $method An HTTP method or an array of HTTP methods
128 */
129 public function matchMethod($method)
130 {
131 $this->methods = null !== $method ? array_map('strtoupper', (array) $method) : [];
132 }
133
134 /**
135 * Adds a check for request attribute.
136 *
137 * @param string $key The request attribute name
138 * @param string $regexp A Regexp
139 */
140 public function matchAttribute($key, $regexp)
141 {
142 $this->attributes[$key] = $regexp;
143 }
144
145 /**
146 * {@inheritdoc}
147 */
148 public function matches(Request $request)
149 {
150 if ($this->schemes && !\in_array($request->getScheme(), $this->schemes, true)) {
151 return false;
152 }
153
154 if ($this->methods && !\in_array($request->getMethod(), $this->methods, true)) {
155 return false;
156 }
157
158 foreach ($this->attributes as $key => $pattern) {
159 if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) {
160 return false;
161 }
162 }
163
164 if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) {
165 return false;
166 }
167
168 if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) {
169 return false;
170 }
171
172 if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
173 return true;
174 }
175
176 // Note to future implementors: add additional checks above the
177 // foreach above or else your check might not be run!
178 return 0 === \count($this->ips);
179 }
180 }
181