12
12
namespace Symfony \Component \HttpFoundation ;
13
13
14
14
use Symfony \Component \HttpFoundation \Exception \ExpiredSignedUriException ;
15
- use Symfony \Component \HttpFoundation \Exception \LogicException ;
16
15
use Symfony \Component \HttpFoundation \Exception \SignedUriException ;
17
16
use Symfony \Component \HttpFoundation \Exception \UnSignedUriException ;
18
17
use Symfony \Component \HttpFoundation \Exception \UnverifiedSignedUriException ;
@@ -37,7 +36,7 @@ public function __construct(
37
36
}
38
37
39
38
/**
40
- * Signs a URI and returns a SignedUri object .
39
+ * Signs a URI.
41
40
*
42
41
* The given URI is signed by adding the query string parameter
43
42
* which value depends on the URI and the secret.
@@ -50,8 +49,18 @@ public function __construct(
50
49
*
51
50
* The expiration is added as a query string parameter.
52
51
*/
53
- public function signAndWrap (string $ uri , \DateTimeInterface |\DateInterval |int |null $ expiration = null ): SignedUri
52
+ public function sign (string $ uri/* , \DateTimeInterface|\DateInterval|int|null $expiration = null */ ): string
54
53
{
54
+ $ expiration = null ;
55
+
56
+ if (1 < \func_num_args ()) {
57
+ $ expiration = func_get_arg (1 );
58
+ }
59
+
60
+ if (null !== $ expiration && !$ expiration instanceof \DateTimeInterface && !$ expiration instanceof \DateInterval && !\is_int ($ expiration )) {
61
+ throw new \TypeError (\sprintf ('The second argument of "%s()" must be an instance of "%s" or "%s", an integer or null (%s given). ' , __METHOD__ , \DateTimeInterface::class, \DateInterval::class, get_debug_type ($ expiration )));
62
+ }
63
+
55
64
$ url = parse_url ($ uri );
56
65
$ params = [];
57
66
@@ -68,42 +77,13 @@ public function signAndWrap(string $uri, \DateTimeInterface|\DateInterval|int|nu
68
77
}
69
78
70
79
if (null !== $ expiration ) {
71
- $ params [$ this ->expirationParameter ] = $ expiration = $ this ->getExpirationTime ($ expiration );
80
+ $ params [$ this ->expirationParameter ] = $ this ->getExpirationTime ($ expiration );
72
81
}
73
82
74
83
$ uri = $ this ->buildUrl ($ url , $ params );
75
84
$ params [$ this ->hashParameter ] = $ this ->computeHash ($ uri );
76
85
77
- return new SignedUri ($ this ->buildUrl ($ url , $ params ), $ expiration );
78
- }
79
-
80
- /**
81
- * Signs a URI.
82
- *
83
- * The given URI is signed by adding the query string parameter
84
- * which value depends on the URI and the secret.
85
- *
86
- * @param \DateTimeInterface|\DateInterval|int|null $expiration The expiration for the given URI.
87
- * If $expiration is a \DateTimeInterface, it's expected to be the exact date + time.
88
- * If $expiration is a \DateInterval, the interval is added to "now" to get the date + time.
89
- * If $expiration is an int, it's expected to be a timestamp in seconds of the exact date + time.
90
- * If $expiration is null, no expiration.
91
- *
92
- * The expiration is added as a query string parameter.
93
- */
94
- public function sign (string $ uri/* , \DateTimeInterface|\DateInterval|int|null $expiration = null */ ): string
95
- {
96
- $ expiration = null ;
97
-
98
- if (1 < \func_num_args ()) {
99
- $ expiration = func_get_arg (1 );
100
- }
101
-
102
- if (null !== $ expiration && !$ expiration instanceof \DateTimeInterface && !$ expiration instanceof \DateInterval && !\is_int ($ expiration )) {
103
- throw new \TypeError (\sprintf ('The second argument of "%s()" must be an instance of "%s" or "%s", an integer or null (%s given). ' , __METHOD__ , \DateTimeInterface::class, \DateInterval::class, get_debug_type ($ expiration )));
104
- }
105
-
106
- return (string ) $ this ->signAndWrap ($ uri , $ expiration );
86
+ return $ this ->buildUrl ($ url , $ params );
107
87
}
108
88
109
89
/**
@@ -133,14 +113,14 @@ public function checkRequest(Request $request): bool
133
113
}
134
114
135
115
/**
136
- * Verify a Request/string URI and return a SignedUri object .
116
+ * Verify a Request or string URI .
137
117
*
138
118
* @throws UnSignedUriException If the URI is not signed
139
119
* @throws UnverifiedSignedUriException If the signature is invalid
140
120
* @throws ExpiredSignedUriException If the URI has expired
141
121
* @throws SignedUriException
142
122
*/
143
- public function verify (Request |string $ uri ): SignedUri
123
+ public function verify (Request |string $ uri ): void
144
124
{
145
125
if ($ uri instanceof Request) {
146
126
$ qs = ($ qs = $ uri ->server ->get ('QUERY_STRING ' )) ? '? ' .$ qs : '' ;
@@ -167,11 +147,11 @@ public function verify(Request|string $uri): SignedUri
167
147
}
168
148
169
149
if (!$ expiration = $ params [$ this ->expirationParameter ] ?? false ) {
170
- return new SignedUri ( $ uri ) ;
150
+ return ;
171
151
}
172
152
173
153
if (time () < $ expiration ) {
174
- return new SignedUri ( $ uri , $ expiration ) ;
154
+ return ;
175
155
}
176
156
177
157
throw new ExpiredSignedUriException (
0 commit comments