mirror of
https://github.com/flatpak/flatpak.git
synced 2026-04-02 06:13:13 -04:00
OCI: Add flatpak_oci_registry_load_image_config helper
We can't use load_versioned() for images because in the docker case there is no mediatype field.
This commit is contained in:
@@ -53,5 +53,6 @@ typedef struct FlatpakDir FlatpakDir;
|
||||
typedef struct FlatpakDeploy FlatpakDeploy;
|
||||
typedef struct FlatpakOciRegistry FlatpakOciRegistry;
|
||||
typedef struct _FlatpakOciManifest FlatpakOciManifest;
|
||||
typedef struct _FlatpakOciImage FlatpakOciImage;
|
||||
|
||||
#endif /* __FLATPAK_COMMON_TYPES_H__ */
|
||||
|
||||
@@ -225,6 +225,9 @@ void flatpak_oci_image_set_layer (FlatpakOciImage *image,
|
||||
GHashTable * flatpak_oci_image_get_labels (FlatpakOciImage *self);
|
||||
int flatpak_oci_image_add_history (FlatpakOciImage *image);
|
||||
|
||||
FlatpakOciImage * flatpak_oci_image_from_json (GBytes *bytes,
|
||||
GError **error);
|
||||
|
||||
void flatpak_oci_add_annotations_for_commit (GHashTable *annotations,
|
||||
const char *ref,
|
||||
const char *commit,
|
||||
|
||||
@@ -211,6 +211,26 @@ flatpak_oci_versioned_from_json (GBytes *bytes, GError **error)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FlatpakOciImage *
|
||||
flatpak_oci_image_from_json (GBytes *bytes,
|
||||
GError **error)
|
||||
{
|
||||
g_autoptr(JsonParser) parser = NULL;
|
||||
JsonNode *root = NULL;
|
||||
|
||||
parser = json_parser_new ();
|
||||
if (!json_parser_load_from_data (parser,
|
||||
g_bytes_get_data (bytes, NULL),
|
||||
g_bytes_get_size (bytes),
|
||||
error))
|
||||
return NULL;
|
||||
|
||||
root = json_parser_get_root (parser);
|
||||
|
||||
return (FlatpakOciImage *) flatpak_json_from_node (root, FLATPAK_TYPE_OCI_IMAGE, error);
|
||||
}
|
||||
|
||||
|
||||
const char *
|
||||
flatpak_oci_versioned_get_mediatype (FlatpakOciVersioned *self)
|
||||
{
|
||||
|
||||
@@ -105,6 +105,12 @@ FlatpakOciVersioned * flatpak_oci_registry_load_versioned (FlatpakOciRegistry *
|
||||
gsize *out_size,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
FlatpakOciImage * flatpak_oci_registry_load_image_config (FlatpakOciRegistry *self,
|
||||
const char *repository,
|
||||
const char *digest,
|
||||
gsize *out_size,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
FlatpakOciLayerWriter *flatpak_oci_registry_write_layer (FlatpakOciRegistry *self,
|
||||
GCancellable *cancellable,
|
||||
GError **error);
|
||||
|
||||
@@ -957,6 +957,27 @@ flatpak_oci_registry_load_versioned (FlatpakOciRegistry *self,
|
||||
return flatpak_oci_versioned_from_json (bytes, error);
|
||||
}
|
||||
|
||||
FlatpakOciImage *
|
||||
flatpak_oci_registry_load_image_config (FlatpakOciRegistry *self,
|
||||
const char *repository,
|
||||
const char *digest,
|
||||
gsize *out_size,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
g_autoptr(GBytes) bytes = NULL;
|
||||
|
||||
g_assert (self->valid);
|
||||
|
||||
bytes = flatpak_oci_registry_load_blob (self, repository, FALSE, digest, cancellable, error);
|
||||
if (bytes == NULL)
|
||||
return NULL;
|
||||
|
||||
if (out_size)
|
||||
*out_size = g_bytes_get_size (bytes);
|
||||
return flatpak_oci_image_from_json (bytes, error);
|
||||
}
|
||||
|
||||
struct FlatpakOciLayerWriter
|
||||
{
|
||||
GObject parent;
|
||||
|
||||
Reference in New Issue
Block a user