formSubmissionService = $formSubmissionService; } /** * @param WP_REST_Request $data * * @return WP_REST_Response * * @throws InvalidArgumentException|NotFoundException|ForbiddenException * @throws ValidationException */ protected function handle(WP_REST_Request $data): WP_REST_Response { Sanitizer::verifyNonce($data->get_header('X-WP-Nonce')); $params = SubmissionPayloadParser::parseRequestPayload($data); $formId = Sanitizer::sanitizeId((int) ($params['formId'] ?? 0)); Sanitizer::verifySubmissionNonce(isset($params['nonce']) ? (string) $params['nonce'] : null, $formId); $uploadedFiles = SubmissionMultipartReader::resolveUploadedFiles($data); $result = $this->formSubmissionService->processSubmission($params, $uploadedFiles); return new WP_REST_Response([ 'data' => $result, ], 200); } }