@@ 16-71 (lines=56) @@ | ||
13 | * |
|
14 | * @package Finder\Http\Actions |
|
15 | */ |
|
16 | class SubscriptionCreateAction |
|
17 | { |
|
18 | /** |
|
19 | * @var ResponseFactory |
|
20 | */ |
|
21 | private $responseFactory; |
|
22 | ||
23 | /** |
|
24 | * @var SubscriptionManager |
|
25 | */ |
|
26 | private $subscriptionManager; |
|
27 | ||
28 | /** |
|
29 | * SubscriptionCreateAction constructor. |
|
30 | * |
|
31 | * @param ResponseFactory $responseFactory |
|
32 | * @param SubscriptionManager $subscriptionManager |
|
33 | */ |
|
34 | public function __construct(ResponseFactory $responseFactory, SubscriptionManager $subscriptionManager) |
|
35 | { |
|
36 | $this->responseFactory = $responseFactory; |
|
37 | $this->subscriptionManager = $subscriptionManager; |
|
38 | } |
|
39 | ||
40 | /** |
|
41 | * @apiVersion 1.0.0 |
|
42 | * @api {post} /v1/subscriptions Create |
|
43 | * @apiName Create |
|
44 | * @apiGroup Subscriptions |
|
45 | * @apiHeader {String} Accept application/json |
|
46 | * @apiHeader {String} Content-Type application/json |
|
47 | * @apiParamExample {json} Request-Body-Example: |
|
48 | * { |
|
49 | * "email": "[email protected]" |
|
50 | * } |
|
51 | * @apiSuccessExample {json} Success-Response: |
|
52 | * HTTP/1.1 201 Created |
|
53 | * { |
|
54 | * "email": "[email protected]", |
|
55 | * "token": "subscription_token_string" |
|
56 | * } |
|
57 | */ |
|
58 | ||
59 | /** |
|
60 | * Create a subscription. |
|
61 | * |
|
62 | * @param ReCaptchaRequest $request |
|
63 | * @return JsonResponse |
|
64 | */ |
|
65 | public function __invoke(ReCaptchaRequest $request): JsonResponse |
|
66 | { |
|
67 | $subscription = $this->subscriptionManager->create($request->all()); |
|
68 | ||
69 | return $this->responseFactory->json(new SubscriptionPlainResource($subscription), JsonResponse::HTTP_CREATED); |
|
70 | } |
|
71 | } |
|
72 |
@@ 14-61 (lines=48) @@ | ||
11 | * |
|
12 | * @package Finder\Http\Actions |
|
13 | */ |
|
14 | class SubscriptionDeleteByTokenAction |
|
15 | { |
|
16 | /** |
|
17 | * @var ResponseFactory |
|
18 | */ |
|
19 | private $responseFactory; |
|
20 | ||
21 | /** |
|
22 | * @var SubscriptionManager |
|
23 | */ |
|
24 | private $subscriptionManager; |
|
25 | ||
26 | /** |
|
27 | * SubscriptionDeleteByTokenAction constructor. |
|
28 | * |
|
29 | * @param ResponseFactory $responseFactory |
|
30 | * @param SubscriptionManager $subscriptionManager |
|
31 | */ |
|
32 | public function __construct(ResponseFactory $responseFactory, SubscriptionManager $subscriptionManager) |
|
33 | { |
|
34 | $this->responseFactory = $responseFactory; |
|
35 | $this->subscriptionManager = $subscriptionManager; |
|
36 | } |
|
37 | ||
38 | /** |
|
39 | * @apiVersion 1.0.0 |
|
40 | * @api {delete} /v1/subscriptions/:token Delete |
|
41 | * @apiName Delete |
|
42 | * @apiGroup Subscriptions |
|
43 | * @apiHeader {String} Accept application/json |
|
44 | * @apiParam {String{1..255}} :token Subscription token. |
|
45 | * @apiSuccessExample {json} Success-Response: |
|
46 | * HTTP/1.1 204 No Content |
|
47 | */ |
|
48 | ||
49 | /** |
|
50 | * Delete a subscription. |
|
51 | * |
|
52 | * @param string $token |
|
53 | * @return JsonResponse |
|
54 | */ |
|
55 | public function __invoke(string $token): JsonResponse |
|
56 | { |
|
57 | $this->subscriptionManager->deleteByToken($token); |
|
58 | ||
59 | return $this->responseFactory->json(null, JsonResponse::HTTP_NO_CONTENT); |
|
60 | } |
|
61 | } |
|
62 |