From: Michael Tremer Date: Mon, 22 Jan 2018 15:57:19 +0000 (+0100) Subject: libpakfire: Store base URL in repository X-Git-Tag: 0.9.28~1285^2~1139 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b576a96f14099ef12b8d86310649f6e9c265622;p=pakfire.git libpakfire: Store base URL in repository Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/repo.c b/src/_pakfire/repo.c index 1c65b47ee..4866719f7 100644 --- a/src/_pakfire/repo.c +++ b/src/_pakfire/repo.c @@ -144,6 +144,18 @@ static int Repo_set_priority(RepoObject* self, PyObject* value) { return 0; } +static PyObject* Repo_get_baseurl(RepoObject* self) { + const char* baseurl = pakfire_repo_get_baseurl(self->repo); + + return PyUnicode_FromString(baseurl); +} + +static int Repo_set_baseurl(RepoObject* self, PyObject* value) { + const char* baseurl = PyUnicode_AsUTF8(value); + + return pakfire_repo_set_baseurl(self->repo, baseurl); +} + static PyObject* Repo_read_solv(RepoObject* self, PyObject* args) { const char* filename = NULL; @@ -347,6 +359,13 @@ static struct PyMethodDef Repo_methods[] = { }; static struct PyGetSetDef Repo_getsetters[] = { + { + "baseurl", + (getter)Repo_get_baseurl, + (setter)Repo_set_baseurl, + "The base URL of this repository", + NULL + }, { "name", (getter)Repo_get_name, diff --git a/src/libpakfire/include/pakfire/repo.h b/src/libpakfire/include/pakfire/repo.h index f8085e150..09bb7c779 100644 --- a/src/libpakfire/include/pakfire/repo.h +++ b/src/libpakfire/include/pakfire/repo.h @@ -47,6 +47,9 @@ void pakfire_repo_set_enabled(PakfireRepo repo, int enabled); int pakfire_repo_get_priority(PakfireRepo repo); void pakfire_repo_set_priority(PakfireRepo repo, int priority); +const char* pakfire_repo_get_baseurl(PakfireRepo repo); +int pakfire_repo_set_baseurl(PakfireRepo repo, const char* baseurl); + int pakfire_repo_is_installed_repo(PakfireRepo repo); int pakfire_repo_read_solv(PakfireRepo repo, const char* filename, int flags); diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index ae9371ebe..1d160eb86 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -225,6 +225,7 @@ global: pakfire_repo_count; pakfire_repo_clean; pakfire_repo_create; + pakfire_repo_get_baseurl; pakfire_repo_get_cache; pakfire_repo_get_name; pakfire_repo_get_enabled; @@ -237,6 +238,7 @@ global: pakfire_repo_read_solv; pakfire_repo_read_solv_fp; pakfire_repo_ref; + pakfire_repo_set_baseurl; pakfire_repo_set_enabled; pakfire_repo_set_name; pakfire_repo_set_priority; diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 313f7538f..be797754f 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -44,6 +44,8 @@ const size_t XZ_HEADER_LENGTH = sizeof(XZ_HEADER_MAGIC); struct pakfire_repo_appdata { Repodata* repodata; + + char* baseurl; }; struct _PakfireRepo { @@ -55,6 +57,10 @@ struct _PakfireRepo { static void free_repo_appdata(struct pakfire_repo_appdata* appdata) { // repodata is being destroyed with the repository + + if (appdata->baseurl) + pakfire_free(appdata->baseurl); + pakfire_free(appdata); } @@ -208,6 +214,18 @@ PAKFIRE_EXPORT void pakfire_repo_set_priority(PakfireRepo repo, int priority) { repo->repo->priority = priority; } +PAKFIRE_EXPORT const char* pakfire_repo_get_baseurl(PakfireRepo repo) { + return repo->appdata->baseurl; +} + +PAKFIRE_EXPORT int pakfire_repo_set_baseurl(PakfireRepo repo, const char* baseurl) { + if (repo->appdata->baseurl) + pakfire_free(repo->appdata->baseurl); + + repo->appdata->baseurl = pakfire_strdup(baseurl); + return 0; +} + PAKFIRE_EXPORT int pakfire_repo_is_installed_repo(PakfireRepo repo) { PakfireRepo installed_repo = pakfire_get_installed_repo(repo->pakfire); diff --git a/src/pakfire/repository/remote.py b/src/pakfire/repository/remote.py index 6d64253a8..9b52f6a28 100644 --- a/src/pakfire/repository/remote.py +++ b/src/pakfire/repository/remote.py @@ -42,14 +42,13 @@ class RepositoryRemote(base.RepositoryFactory): # Save the settings that come from the configuration file self.settings = settings + # Set the baseurl + self.baseurl = self.settings.get("baseurl") + # Enabled/disable the repository, based on the configuration setting. enabled = self.settings.get("enabled", True) self.enabled = util.is_enabled(enabled) - @property - def baseurl(self): - return self.settings.get("baseurl") - @property def keyfile(self): keyfile = self.settings.get("keyfile", None)