Code Duplication    Length = 20-20 lines in 2 locations

index.php 2 locations

@@ 100-119 (lines=20) @@
97
/*
98
 * define routes
99
 */
100
$app->group($apiPrefix . '/devices', function () {
101
    $this->post('', function (Request $request, Response $response) {
102
        return $response->withJson(callWithNonEmptyParams([$this->devices, 'create'], $request->getParsedBody(), $request->getParams()));
103
    });
104
    $this->get('', function (Request $request, Response $response) {
105
        return $response->withJson(callWithNonEmptyParams([$this->devices, 'all'], $request->getParams()));
106
    });
107
    $this->get(id_PATTERN, function (Request $request, Response $response, $id) {
108
        return $response->withJson(callWithNonEmptyParams([$this->devices, 'get'], $id, $request->getParams()));
109
    });
110
    $this->put(id_PATTERN, function (Request $request, Response $response, $id) {
111
        return $response->withJson(callWithNonEmptyParams([$this->devices, 'update'], $id, $request->getParams()));
112
    });
113
    $this->delete(id_PATTERN, function (Request $request, Response $response, $id) {
114
        return $response->withJson(callWithNonEmptyParams([$this->devices, 'delete'], $id, $request->getParams()));
115
    });
116
    $this->get(id_PATTERN . '/logs', function (Request $request, Response $response, $id) {
117
        return $response->withJson(callWithNonEmptyParams([$this->logs, 'listByDevice'], $id, $request->getParams()));
118
    });
119
});
120
$app->group($apiPrefix . '/logs', function () {
121
    $this->post('', function (Request $request, Response $response) {
122
        return $response->withJson(callWithNonEmptyParams([$this->logs, 'create'], $request->getParsedBody(), $request->getParams()));
@@ 157-176 (lines=20) @@
154
        return $response->withJson(callWithNonEmptyParams([$this->entries, 'delete'], $id, $request->getParams()));
155
    });
156
});
157
$app->group($apiPrefix . '/users', function () {
158
    $this->post('', function (Request $request, Response $response) {
159
        return $response->withJson(callWithNonEmptyParams([$this->users, 'create'], $request->getParsedBody(), $request->getParams()));
160
    });
161
    $this->get('', function (Request $request, Response $response) {
162
        return $response->withJson(callWithNonEmptyParams([$this->users, 'all'], $request->getParams()));
163
    });
164
    $this->get(id_PATTERN, function (Request $request, Response $response, $id) {
165
        return $response->withJson(callWithNonEmptyParams([$this->users, 'get'], $id, $request->getParams()));
166
    });
167
    $this->get('/{screen_name:\w{' . User::SCREEN_NAME_MINIMUM_LENGTH . ',}}', function (Request $request, Response $response, $screen_name) {
168
        return $response->withJson(callWithNonEmptyParams([$this->users, 'lookupByScreenName'], $screen_name, $request->getParams()));
169
    });
170
    $this->put(id_PATTERN, function (Request $request, Response $response, $id) {
171
        return $response->withJson(callWithNonEmptyParams([$this->users, 'update'], $id, $request->getParams()));
172
    });
173
    $this->delete(id_PATTERN, function (Request $request, Response $response, $id) {
174
        return $response->withJson(callWithNonEmptyParams([$this->users, 'delete'], $id, $request->getParams()));
175
    });
176
});
177
178
/* finish lazy CORS */
179
$app->map(['GET', 'POST', 'PUT', 'DELETE'], $apiPrefix . '/{routes:.+}', function ($req, $res) {