Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
7 / 7
CRAP
100.00% covered (success)
100.00%
1 / 1
ConnectionController
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
7 / 7
10
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 json
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 create
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 update
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 delete
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 cancel
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 unload
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5/**
6 * Slim-style controller for connection endpoints (create, update, delete, cancel, unload).
7 * Delegates to ConnectionService.
8 */
9
10use Psr\Http\Message\ResponseInterface as Response;
11use Psr\Http\Message\ServerRequestInterface as Request;
12use UppServices\ConnectionService;
13
14class ConnectionController
15{
16    private readonly ConnectionService $connectionService;
17
18    public function __construct(ConnectionService $connectionService)
19    {
20        $this->connectionService = $connectionService;
21    }
22
23    private function json(Response $response, array $data): Response
24    {
25        $response->getBody()->write(json_encode($data));
26        return $response->withHeader('Content-Type', 'application/json');
27    }
28
29    /** POST /connection/create - create connection for session (sync registration) */
30    public function create(Request $request, Response $response): Response
31    {
32        $body = $request->getBody()->getContents();
33        $config = $body !== '' ? (json_decode($body, true) ?? []) : [];
34        $result = $this->connectionService->create($request->getQueryParams(), $config);
35        return $this->json($response, $result);
36    }
37
38    /** POST /connection/update - update connection config (triggers) */
39    public function update(Request $request, Response $response): Response
40    {
41        $body = $request->getBody()->getContents();
42        $config = $body !== '' ? (json_decode($body, true) ?? []) : [];
43        $result = $this->connectionService->update($request->getQueryParams(), $config);
44        return $this->json($response, $result);
45    }
46
47    /** POST /connection/delete - delete connection (disconnect) */
48    public function delete(Request $request, Response $response): Response
49    {
50        $result = $this->connectionService->delete($request->getQueryParams());
51        return $this->json($response, $result);
52    }
53
54    /** POST /connection/cancel - cancel connection (wake from another device) */
55    public function cancel(Request $request, Response $response): Response
56    {
57        $result = $this->connectionService->cancel($request->getQueryParams());
58        return $this->json($response, $result);
59    }
60
61    /** POST /connection/unload - logout session, notify offline, register events */
62    public function unload(Request $request, Response $response): Response
63    {
64        $body = $request->getBody()->getContents();
65        $data = $body !== '' ? (json_decode($body, true) ?? []) : [];
66        $result = $this->connectionService->unload($data);
67        return $this->json($response, $result);
68    }
69}