[0-9a-f]{32})'; private ImportUploads $uploads; public function __construct(ImportUploads $uploads) { $this->uploads = $uploads; } public function register(): void { $this->route('/imports/uploads', 'POST', fn (\WP_REST_Request $r) => $this->uploads->start((string) $r->get_param('filename'), (int) $r->get_param('size'))); $this->route('/imports/uploads/' . self::ID, 'POST', fn (\WP_REST_Request $r) => [ 'received' => $this->uploads->append($r['id'], (int) $r->get_header('x_relay_offset'), (string) $r->get_body()), ]); $this->route('/imports/uploads/' . self::ID . '/complete', 'POST', fn (\WP_REST_Request $r) => new \WP_REST_Response($this->uploads->complete($r['id']), 201)); $this->route('/imports/uploads/' . self::ID, 'DELETE', function (\WP_REST_Request $r) { $this->uploads->abort($r['id']); return ['deleted' => true]; }); } }