]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Store base URL in repository
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 15:57:19 +0000 (16:57 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 22 Jan 2018 15:57:19 +0000 (16:57 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/repo.c
src/libpakfire/include/pakfire/repo.h
src/libpakfire/libpakfire.sym
src/libpakfire/repo.c
src/pakfire/repository/remote.py

index 1c65b47eeddb50df6efc6718c5770a356afe6217..4866719f779fb87d6fa9a094ad37b6ec265423bf 100644 (file)
@@ -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,
index f8085e1501a53ae68fda94b71b46f676fc14a00e..09bb7c779c481a1be5fc101d1ef68b33bfc14be3 100644 (file)
@@ -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);
index ae9371ebe07b2415ffd3f47facb84c2c412198eb..1d160eb86e135f595f540e2d6a431869d0c1f0ad 100644 (file)
@@ -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;
index 313f7538fc90a34fd88f59eb741c2216998cce2f..be797754fe7ff6a745bb145049ceee2bfdbc0d82 100644 (file)
@@ -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);
 
index 6d64253a8b9f7b8f8b950fac22b77d386d81c7e5..9b52f6a281e2c21857be2506732f8bd3a1e6c8ed 100644 (file)
@@ -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)