Code Duplication    Length = 48-56 lines in 2 locations

src/Http/Actions/SubscriptionCreateAction.php 1 location

@@ 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

src/Http/Actions/SubscriptionDeleteByTokenAction.php 1 location

@@ 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