service = $service; } public function ingest( ServerRequestInterface $request, ResponseInterface $response ): ResponseInterface { $body = $request->getParsedBody(); // Validate request body if (!is_array($body)) { return ResponseHelper::json( $response, [ 'error' => 'validation_error', 'fields' => ['body' => 'Invalid JSON body'] ], 422 ); } // Basic format validation $errors = Validator::validateIngest($body); if (!empty($errors)) { return ResponseHelper::json( $response, [ 'error' => 'validation_error', 'fields' => $errors ], 422 ); } // Get source IP $serverParams = $request->getServerParams(); $sourceIp = $serverParams['REMOTE_ADDR'] ?? '0.0.0.0'; try { // Process ingest with database validation $result = $this->service->processIngest($body, $sourceIp); if (!$result['valid']) { // Not found error if ($result['code'] === 'not_found') { return ResponseHelper::json( $response, [ 'error' => 'not_found', 'message' => $result['error'] ], 404 ); } // Other validation errors return ResponseHelper::json( $response, [ 'error' => 'validation_error', 'message' => $result['error'] ], 422 ); } // Success return ResponseHelper::json( $response, [ 'success' => true, 'data' => ['stored' => true], 'timestamp' => time() ] ); } catch (PDOException $e) { // Database error return ResponseHelper::json( $response, [ 'error' => 'server_error', 'message' => 'Database error occurred' ], 500 ); } } }