SoupSession * builder_context_get_soup_session (BuilderContext *self) { if (self->soup_session == NULL) self->soup_session = flatpak_create_soup_session ("flatpak-builder"); return self->soup_session; }
static void load_options (const char *filename, GBytes **gpg_data) { g_autoptr(GError) error = NULL; g_autoptr(GKeyFile) keyfile = g_key_file_new (); char *str; gboolean nodeps; g_autoptr(GBytes) bytes = NULL; g_autofree char *version = NULL; if (g_str_has_prefix (filename, "http:") || g_str_has_prefix (filename, "https:")) { const char *options_data; gsize options_size; g_autoptr(SoupSession) soup_session = NULL; soup_session = flatpak_create_soup_session (PACKAGE_STRING); bytes = flatpak_load_http_uri (soup_session, filename, 0, NULL, NULL, NULL, &error); if (bytes == NULL) { g_printerr (_("Can't load uri %s: %s\n"), filename, error->message); exit (1); } options_data = g_bytes_get_data (bytes, &options_size); if (!g_key_file_load_from_data (keyfile, options_data, options_size, 0, &error)) { g_printerr (_("Can't load uri %s: %s\n"), filename, error->message); exit (1); } } else { if (!g_key_file_load_from_file (keyfile, filename, 0, &error)) { g_printerr (_("Can't load file %s: %s\n"), filename, error->message); exit (1); } } if (!g_key_file_has_group (keyfile, FLATPAK_REPO_GROUP)) { g_printerr (_("Invalid file format")); exit (1); } version = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_VERSION_KEY, NULL); if (version != NULL && strcmp (version, "1") != 0) { g_printerr (_("Invalid version %s, only 1 supported"), version); exit (1); } str = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_URL_KEY, NULL); if (str != NULL) opt_url = str; str = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_DEPLOY_COLLECTION_ID_KEY, NULL); if (str != NULL && *str != '\0') opt_collection_id = str; else { str = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_COLLECTION_ID_KEY, NULL); if (str != NULL && *str != '\0') opt_collection_id = str; } str = g_key_file_get_locale_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_TITLE_KEY, NULL, NULL); if (str != NULL) opt_title = str; str = g_key_file_get_locale_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_DEFAULT_BRANCH_KEY, NULL, NULL); if (str != NULL) opt_default_branch = str; nodeps = g_key_file_get_boolean (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_NODEPS_KEY, NULL); if (nodeps) { opt_no_deps = TRUE; opt_do_deps = FALSE; } str = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_GPGKEY_KEY, NULL); if (str != NULL) { guchar *decoded; gsize decoded_len; str = g_strstrip (str); decoded = g_base64_decode (str, &decoded_len); if (decoded_len < 10) /* Check some minimal size so we don't get crap */ { g_printerr (_("Invalid gpg key")); exit (1); } *gpg_data = g_bytes_new_take (decoded, decoded_len); if (!opt_no_gpg_verify) opt_do_gpg_verify = TRUE; } comment = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_COMMENT_KEY, NULL); description = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_DESCRIPTION_KEY, NULL); icon = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_ICON_KEY, NULL); homepage = g_key_file_get_string (keyfile, FLATPAK_REPO_GROUP, FLATPAK_REPO_HOMEPAGE_KEY, NULL); }