Skip to content

Commit 6cfee23

Browse files
committed
ISSUE-345: snake to camel config
1 parent b74bb83 commit 6cfee23

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

config/services/normalizers.yml

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ services:
44
autoconfigure: true
55
public: false
66

7+
Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter: ~
8+
9+
Symfony\Component\Serializer\Normalizer\ObjectNormalizer:
10+
arguments:
11+
$classMetadataFactory: '@?serializer.mapping.class_metadata_factory'
12+
$nameConverter: '@Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter'
13+
# $propertyTypeExtractor: '@?serializer.property_type_extractor'
14+
715
PhpList\RestBundle\Serializer\SubscriberNormalizer:
816
tags: [ 'serializer.normalizer' ]
917
autowire: true

src/Entity/SubscriberRequest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class SubscriberRequest implements RequestInterface
1515
public string $email;
1616

1717
#[Assert\Type(type: 'bool')]
18-
public ?bool $request_confirmation = null;
18+
public ?bool $requestConfirmation = null;
1919

2020
#[Assert\Type(type: 'bool')]
21-
public ?bool $html_email = null;
21+
public ?bool $htmlEmail = null;
2222
}

src/Service/Manager/SubscriberManager.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public function createSubscriber(SubscriberRequest $subscriberRequest): Subscrib
2121
{
2222
$subscriber = new Subscriber();
2323
$subscriber->setEmail($subscriberRequest->email);
24-
$confirmed = (bool)$subscriberRequest->request_confirmation;
24+
$confirmed = (bool)$subscriberRequest->requestConfirmation;
2525
$subscriber->setConfirmed(!$confirmed);
2626
$subscriber->setBlacklisted(false);
27-
$subscriber->setHtmlEmail((bool)$subscriberRequest->html_email);
27+
$subscriber->setHtmlEmail((bool)$subscriberRequest->htmlEmail);
2828
$subscriber->setDisabled(false);
2929

3030
$this->subscriberRepository->save($subscriber);

src/Validator/RequestValidator.php

+12-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
1010
use Symfony\Component\Serializer\SerializerInterface;
1111
use Symfony\Component\Validator\Validator\ValidatorInterface;
12-
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
1312
use Throwable;
1413

1514
class RequestValidator
@@ -33,7 +32,18 @@ public function validate(Request $request, string $dtoClass): RequestInterface
3332
$errors = $this->validator->validate($dto);
3433

3534
if (count($errors) > 0) {
36-
throw new UnprocessableEntityHttpException((string) $errors);
35+
$lines = [];
36+
foreach ($errors as $violation) {
37+
$lines[] = sprintf(
38+
'%s: %s',
39+
$violation->getPropertyPath(),
40+
$violation->getMessage()
41+
);
42+
}
43+
44+
$message = implode("\n", $lines);
45+
46+
throw new UnprocessableEntityHttpException($message);
3747
}
3848

3949
return $dto;

0 commit comments

Comments
 (0)