Skip to content

Commit d6b2fa4

Browse files
committed
Refactor the Parameters value object
1 parent 491e5af commit d6b2fa4

File tree

5 files changed

+98
-85
lines changed

5 files changed

+98
-85
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ All Notable changes to `bakame/http-strucured-fields` will be documented in this
1010

1111
### Fixed
1212

13-
- None
13+
- Made the `Parser` only returning collections array of items or bare items value
14+
- All `Parameters` getters checks for bare items validity.
15+
- `ForbiddenStateError` extends SPL `LogicException` instead of `UnexpectedValueException`
1416

1517
### Deprecated
1618

src/Dictionary.php

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,6 @@ public function has(string $key): bool
159159
*/
160160
public function get(string $key): Item|InnerList
161161
{
162-
self::validateKey($key);
163-
164162
if (!array_key_exists($key, $this->members)) {
165163
throw InvalidOffset::dueToKeyNotFound($key);
166164
}
@@ -226,19 +224,19 @@ public function pair(int $index): array
226224
*/
227225
public function set(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): void
228226
{
229-
self::validateKey($key);
230-
231-
$this->members[$key] = self::filterMember($member);
227+
$this->members[self::filterKey($key)] = self::filterMember($member);
232228
}
233229

234230
/**
235231
* Validate the instance key against RFC8941 rules.
236232
*/
237-
private static function validateKey(string $key): void
233+
private static function filterKey(string $key): string
238234
{
239235
if (1 !== preg_match('/^[a-z*][a-z0-9.*_-]*$/', $key)) {
240236
throw new SyntaxError("The dictionary key `$key` contains invalid characters.");
241237
}
238+
239+
return $key;
242240
}
243241

244242
/**
@@ -251,7 +249,7 @@ private static function filterMember(InnerList|Item|ByteSequence|Token|array|boo
251249
{
252250
return match (true) {
253251
$member instanceof InnerList, $member instanceof Item => $member,
254-
is_iterable($member) => InnerList::fromList(...$member),
252+
is_array($member) => InnerList::fromList(...$member),
255253
default => Item::from($member),
256254
};
257255
}
@@ -284,11 +282,9 @@ public function clear(): void
284282
*/
285283
public function append(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): void
286284
{
287-
self::validateKey($key);
288-
289285
unset($this->members[$key]);
290286

291-
$this->members[$key] = self::filterMember($member);
287+
$this->members[self::filterKey($key)] = self::filterMember($member);
292288
}
293289

294290
/**
@@ -301,11 +297,9 @@ public function append(string $key, InnerList|Item|ByteSequence|Token|array|bool
301297
*/
302298
public function prepend(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): void
303299
{
304-
self::validateKey($key);
305-
306300
unset($this->members[$key]);
307301

308-
$this->members = [...[$key => self::filterMember($member)], ...$this->members];
302+
$this->members = [...[self::filterKey($key) => self::filterMember($member)], ...$this->members];
309303
}
310304

311305
/**

src/ForbiddenStateError.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace Bakame\Http\StructuredFields;
44

5-
use UnexpectedValueException;
5+
use LogicException;
66

7-
final class ForbiddenStateError extends UnexpectedValueException implements StructuredFieldError
7+
final class ForbiddenStateError extends LogicException implements StructuredFieldError
88
{
99
}

0 commit comments

Comments
 (0)