1|2|3|all)/(?Pcsv|apache|nginx|json)', [ [ 'methods' => WP_REST_Server::READABLE, 'callback' => [ $this, 'route_export' ], 'permission_callback' => [ $this, 'permission_callback_manage' ], ], ] ); } /** * Check if the user has permission to manage import/export * * @param WP_REST_Request> $request * @return bool */ public function permission_callback_manage( WP_REST_Request $request ) { return Redirection_Capabilities::has_access( Redirection_Capabilities::CAP_IO_MANAGE ); } /** * Export redirects to a specified format * * @param WP_REST_Request> $request * @return ExportResponse|WP_Error */ public function route_export( WP_REST_Request $request ) { $module = sanitize_text_field( $request['module'] ); $format = 'json'; if ( in_array( $request['format'], [ 'csv', 'apache', 'nginx', 'json' ], true ) ) { $format = sanitize_text_field( $request['format'] ); } $export = Red_FileIO::export( $module, $format ); if ( $export === false ) { return $this->add_error_details( new WP_Error( 'redirect_export_invalid_module', 'Invalid module' ), __LINE__ ); } return array( 'data' => $export['data'], 'total' => $export['total'], ); } }