| @@ -7,11 +7,15 @@ | ||
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | 9 | namespace SeQura\WC\Controllers\Rest; |
| 10 | 10 | |
| 11 | +use SeQura\Core\BusinessLogic\AdminAPI\Response\Response; | |
| 11 | 12 | use SeQura\Core\Infrastructure\Utility\RegexProvider; |
| 12 | 13 | use SeQura\WC\Services\Log\Interface_Logger_Service; |
| 14 | +use WP; | |
| 15 | +use WP_Error; | |
| 13 | 16 | use WP_REST_Request; |
| 17 | +use WP_REST_Response; | |
| 14 | 18 | |
| 15 | 19 | /** |
| 16 | 20 | * Helper for REST Controllers |
| 17 | 21 | */ |
| @@ -306,6 +310,29 @@ | ||
| 306 | 310 | return '(?P<' . $param_name . '>[\w]+)'; |
| 307 | 311 | default: |
| 308 | 312 | return ''; |
| 309 | 313 | } |
| 314 | + } | |
| 315 | + | |
| 316 | + /** | |
| 317 | + * Build a valid response for the REST API | |
| 318 | + * | |
| 319 | + * @return WP_REST_Response|WP_Error | |
| 320 | + */ | |
| 321 | + protected function build_response( Response $response ) { | |
| 322 | + return $this->build_response_from_array( $response->toArray(), $response->isSuccessful() ); | |
| 323 | + } | |
| 324 | + | |
| 325 | + /** | |
| 326 | + * Build a valid response for the REST API from an array | |
| 327 | + * | |
| 328 | + * @return WP_REST_Response|WP_Error | |
| 329 | + */ | |
| 330 | + protected function build_response_from_array( array $response_array, bool $is_successful ) { | |
| 331 | + if ( ! $is_successful ) { | |
| 332 | + $code = strval( $response_array['statusCode'] ?? '500' ); | |
| 333 | + $message = strval( $response_array['errorMessage'] ?? 'Unknown error' ); | |
| 334 | + return new WP_Error( $code, $message ); | |
| 335 | + } | |
| 336 | + return \rest_ensure_response( $response_array ); | |
| 310 | 337 | } |
| 311 | 338 | } |