part of 'podman_client.dart'; extension PodmanClientManifestApi on PodmanClient { /// Creates a manifest list. Future createManifest( String name, { ManifestCreateOptions options = const ManifestCreateOptions(), Duration? timeout, }) async { final response = await _send( method: HttpMethod.post, path: '/manifests/${_encodePath(name)}', queryParameters: options.toQueryParameters(), expectedStatusCodes: const {200, 201}, timeout: timeout, ); return ManifestCreateResult.fromJson( _decodeObject(response.bodyText, '/manifests/$name'), ); } /// Whether a manifest list exists. Future manifestExists(String name, {Duration? timeout}) async { final response = await _send( method: HttpMethod.get, path: '/manifests/${_encodePath(name)}/exists', expectedStatusCodes: const {204, 404}, timeout: timeout, ); return response.statusCode == 204; } /// Inspects a manifest list. Future inspectManifest( String name, { bool? tlsVerify, Duration? timeout, }) async { final payload = await _getObject( '/manifests/${_encodePath(name)}/json', queryParameters: >{ if (tlsVerify != null) 'tlsVerify': ['$tlsVerify'], }, timeout: timeout, ); return ManifestDetails.fromJson(payload); } /// Pushes a manifest list to a registry. Future pushManifest( String name, String destination, { bool all = true, bool? tlsVerify, bool quiet = true, Duration? timeout, }) async { final response = await _send( method: HttpMethod.post, path: '/manifests/${_encodePath(name)}/registry/${_encodePath(destination)}', queryParameters: >{ 'all': ['$all'], 'quiet': ['$quiet'], if (tlsVerify != null) 'tlsVerify': ['$tlsVerify'], }, expectedStatusCodes: const {200}, timeout: timeout, ); return ManifestPushResult.fromJson( _decodeObject( response.bodyText, '/manifests/$name/registry/$destination', ), ); } /// Deletes a manifest list. Future deleteManifest( String name, { bool ignoreMissing = false, Duration? timeout, }) async { final response = await _send( method: HttpMethod.delete, path: '/manifests/${_encodePath(name)}', expectedStatusCodes: ignoreMissing ? const {200, 202, 204, 404} : const {200, 202, 204}, timeout: timeout, ); if (response.bodyText.trim().isEmpty) { return const ManifestDeleteResult( deleted: [], untagged: [], exitCode: 0, errors: [], raw: {}, ); } return ManifestDeleteResult.fromJson( _decodeObject(response.bodyText, '/manifests/$name'), ); } }