ai = $this->get_ai_client( new AI() ); $this->request = $request; return $this->response(); } /** * Get AI Client. * * @since 1.1.2 * * @param Provider $provider * @return Provider */ protected function get_ai_client( Provider $provider ): Provider { return $provider; } /** * Register REST Route. * * @since 1.0.0 * * @return void */ public function register_route(): void { register_rest_route( 'ai-plus-block-editor/v1', $this->endpoint, [ 'methods' => $this->method, 'callback' => [ $this, 'request' ], 'permission_callback' => [ $this, 'is_user_permissible' ], ] ); } /** * Get Error Response. * * This method returns an error response for Bad * requests submitted. * * @since 1.0.0 * * @param string $message Error Msg. * @param int $code Error Status code. * * @return \WP_Error */ public function get_error_response( $message, $code = 400 ): WP_Error { $args = $this->request->get_json_params(); return new WP_Error( 'ai-plus-block-editor-bad-request', sprintf( 'Fatal Error: %s', $message ), [ 'status' => $code, 'request' => $args, ] ); } /** * Permissions callback for endpoints. * * @since 1.0.0 * * @param \WP_REST_Request $request Request Object. * @return bool|\WP_Error */ public function is_user_permissible( $request ) { $http_error = rest_authorization_required_code(); if ( ! current_user_can( 'administrator' ) ) { return new WP_Error( 'apbe-rest-forbidden', sprintf( 'Invalid User. Error: %s', $http_error ), [ 'status' => $http_error ] ); } if ( ! wp_verify_nonce( $request->get_header( 'X-WP-Nonce' ), 'wp_rest' ) ) { return new WP_Error( 'apbe-rest-forbidden', sprintf( 'Invalid Nonce. Error: %s', $http_error ), [ 'status' => $http_error ] ); } return true; } }