Skip to content

Commit 70b7c55

Browse files
committed
ISSUE-345: get message by id endpoint
1 parent b90c43b commit 70b7c55

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/Controller/CampaignController.php

+41
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
namespace PhpList\RestBundle\Controller;
66

77
use OpenApi\Attributes as OA;
8+
use PhpList\Core\Domain\Model\Messaging\Message;
89
use PhpList\Core\Security\Authentication;
910
use PhpList\RestBundle\Controller\Traits\AuthenticationTrait;
1011
use PhpList\RestBundle\Entity\Request\CreateMessageRequest;
1112
use PhpList\RestBundle\Serializer\MessageNormalizer;
1213
use PhpList\RestBundle\Service\Manager\MessageManager;
1314
use PhpList\RestBundle\Service\Provider\MessageProvider;
1415
use PhpList\RestBundle\Validator\RequestValidator;
16+
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
1517
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
1618
use Symfony\Component\HttpFoundation\JsonResponse;
1719
use Symfony\Component\HttpFoundation\Request;
@@ -92,6 +94,45 @@ public function getMessages(Request $request): JsonResponse
9294
return new JsonResponse($normalized, Response::HTTP_OK);
9395
}
9496

97+
#[Route('/{messageId}', name: 'get_campaign', methods: ['GET'])]
98+
#[OA\Get(
99+
path: '/campaigns/{messageId}',
100+
description: 'Returns campaign/message by id.',
101+
summary: 'Gets a campaign by id.',
102+
tags: ['campaigns'],
103+
parameters: [
104+
new OA\Parameter(
105+
name: 'session',
106+
description: 'Session ID obtained from authentication',
107+
in: 'header',
108+
required: true,
109+
schema: new OA\Schema(
110+
type: 'string'
111+
)
112+
)
113+
],
114+
responses: [
115+
new OA\Response(
116+
response: 200,
117+
description: 'Success',
118+
content: new OA\JsonContent(ref: '#/components/schemas/Message')
119+
),
120+
new OA\Response(
121+
response: 403,
122+
description: 'Failure',
123+
content: new OA\JsonContent(ref: '#/components/schemas/UnauthorizedResponse')
124+
)
125+
]
126+
)]
127+
public function getMessage(
128+
Request $request,
129+
#[MapEntity(mapping: ['messageId' => 'id'])] Message $message
130+
): JsonResponse {
131+
$this->requireAuthentication($request);
132+
133+
return new JsonResponse($this->normalizer->normalize($message), Response::HTTP_OK);
134+
}
135+
95136
#[Route('', name: 'create_message', methods: ['POST'])]
96137
#[OA\Post(
97138
path: '/campaigns',

0 commit comments

Comments
 (0)