[evolution-data-server/wip/mcrha/soup3] Introduce utility functions to change a single GUri component
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/wip/mcrha/soup3] Introduce utility functions to change a single GUri component
- Date: Wed, 10 Nov 2021 16:44:35 +0000 (UTC)
commit 5f8530f50b28522d8537e8928cf4ebb4c6409b64
Author: Milan Crha <mcrha redhat com>
Date: Wed Nov 10 17:43:52 2021 +0100
Introduce utility functions to change a single GUri component
.../backends/carddav/e-book-backend-carddav.c | 31 +++++------
.../backends/caldav/e-cal-backend-caldav.c | 15 ++---
.../webdav-notes/e-cal-backend-webdav-notes.c | 5 +-
src/libedataserver/e-data-server-util.c | 59 ++++++++++++++++++++
src/libedataserver/e-data-server-util.h | 6 ++
src/libedataserver/e-webdav-discover.c | 65 +++++++++-------------
src/libedataserver/e-webdav-session.c | 33 +++++------
.../e-credentials-prompter-impl-oauth2.c | 5 +-
.../evolution-source-registry-migrate-sources.c | 16 ++----
9 files changed, 132 insertions(+), 103 deletions(-)
---
diff --git a/src/addressbook/backends/carddav/e-book-backend-carddav.c
b/src/addressbook/backends/carddav/e-book-backend-carddav.c
index 8276fc4d5..c337a01c9 100644
--- a/src/addressbook/backends/carddav/e-book-backend-carddav.c
+++ b/src/addressbook/backends/carddav/e-book-backend-carddav.c
@@ -132,7 +132,7 @@ ebb_carddav_connect_sync (EBookMetaBackend *meta_backend,
if (g_error_matches (local_error, E_SOUP_SESSION_ERROR, SOUP_STATUS_NOT_FOUND) ||
g_error_matches (local_error, E_SOUP_SESSION_ERROR, SOUP_STATUS_BAD_REQUEST)) {
ESourceWebdav *webdav_extension;
- GUri *g_uri, *nuri;
+ GUri *g_uri;
webdav_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);
g_uri = e_source_webdav_dup_uri (webdav_extension);
@@ -147,19 +147,15 @@ ebb_carddav_connect_sync (EBookMetaBackend *meta_backend,
if (g_uri_get_path (g_uri)[len - 1] == '/') {
gchar *np = g_strdup (g_uri_get_path (g_uri));
np[len - 1] = '\0';
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, np, SOUP_URI_NONE);
+ e_util_change_uri_component (&g_uri, SOUP_URI_PATH, np);
g_free (np);
- g_uri_unref (g_uri);
- g_uri = nuri;
}
path = g_path_get_dirname (g_uri_get_path (g_uri));
if (path && g_str_has_prefix (g_uri_get_path (g_uri), path)) {
gchar *uri;
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, path, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&g_uri, SOUP_URI_PATH, path);
uri = g_uri_to_string_partial (g_uri, SOUP_HTTP_URI_FLAGS);
if (uri) {
@@ -988,15 +984,15 @@ ebb_carddav_uid_to_uri (EBookBackendCardDAV *bbdav,
const gchar *extension)
{
ESourceWebdav *webdav_extension;
- GUri *g_uri, *nuri;
+ GUri *guri;
gchar *uri, *tmp, *filename, *uid_hash = NULL;
g_return_val_if_fail (E_IS_BOOK_BACKEND_CARDDAV (bbdav), NULL);
g_return_val_if_fail (uid != NULL, NULL);
webdav_extension = e_source_get_extension (e_backend_get_source (E_BACKEND (bbdav)),
E_SOURCE_EXTENSION_WEBDAV_BACKEND);
- g_uri = e_source_webdav_dup_uri (webdav_extension);
- g_return_val_if_fail (g_uri != NULL, NULL);
+ guri = e_source_webdav_dup_uri (webdav_extension);
+ g_return_val_if_fail (guri != NULL, NULL);
/* UIDs with forward slashes can cause trouble, because the destination server
can consider them as a path delimiter. For example Google book backend uses
@@ -1017,23 +1013,22 @@ ebb_carddav_uid_to_uri (EBookBackendCardDAV *bbdav,
filename = g_filename_to_uri (uid, NULL, NULL);
}
- if (*g_uri_get_path (g_uri)) {
- const gchar *slash = strrchr (g_uri_get_path (g_uri), '/');
+ if (*g_uri_get_path (guri)) {
+ const gchar *slash = strrchr (g_uri_get_path (guri), '/');
if (slash && !slash[1])
- tmp = g_strconcat (g_uri_get_path (g_uri), filename, NULL);
+ tmp = g_strconcat (g_uri_get_path (guri), filename, NULL);
else
- tmp = g_strconcat (g_uri_get_path (g_uri), "/", filename, NULL);
+ tmp = g_strconcat (g_uri_get_path (guri), "/", filename, NULL);
} else
tmp = g_strconcat ("/", filename, NULL);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, tmp, SOUP_URI_NONE);
- g_uri_unref (g_uri);
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, tmp);
g_free (tmp);
- uri = g_uri_to_string_partial (nuri, G_URI_HIDE_USERINFO | G_URI_HIDE_PASSWORD);
+ uri = g_uri_to_string_partial (guri, G_URI_HIDE_USERINFO | G_URI_HIDE_PASSWORD);
- g_uri_unref (nuri);
+ g_uri_unref (guri);
g_free (filename);
g_free (uid_hash);
diff --git a/src/calendar/backends/caldav/e-cal-backend-caldav.c
b/src/calendar/backends/caldav/e-cal-backend-caldav.c
index 91ad5c148..b3cb68aac 100644
--- a/src/calendar/backends/caldav/e-cal-backend-caldav.c
+++ b/src/calendar/backends/caldav/e-cal-backend-caldav.c
@@ -570,9 +570,8 @@ ecb_caldav_multiget_from_sets_sync (ECalBackendCalDAV *cbdav,
if (suri) {
const gchar *path;
- char *unesc;
- char *esc;
- GUri *nuri;
+ gchar *unesc;
+ gchar *esc;
path = g_uri_get_path (suri);
unesc = g_uri_unescape_string (path, NULL);
@@ -580,14 +579,13 @@ ecb_caldav_multiget_from_sets_sync (ECalBackendCalDAV *cbdav,
/* now re-escape the string but allowing a @ */
esc = g_uri_escape_string (unesc, "@", FALSE);
- nuri = soup_uri_copy (suri, SOUP_URI_PATH, esc, SOUP_URI_NONE);
+ e_util_change_uri_component (&suri, SOUP_URI_PATH, esc);
g_free (unesc);
g_free (esc);
+ new_uri = g_uri_to_string_partial (suri, G_URI_HIDE_PASSWORD);
g_uri_unref (suri);
- new_uri = g_uri_to_string_partial (nuri, G_URI_HIDE_PASSWORD);
- g_uri_unref (nuri);
}
if (new_uri) {
@@ -1167,7 +1165,6 @@ ecb_caldav_uid_to_uri (ECalBackendCalDAV *cbdav,
{
ESourceWebdav *webdav_extension;
GUri *parsed_uri;
- GUri *nuri;
gchar *uri, *tmp, *filename, *uid_hash = NULL;
g_return_val_if_fail (E_IS_CAL_BACKEND_CALDAV (cbdav), NULL);
@@ -1204,9 +1201,7 @@ ecb_caldav_uid_to_uri (ECalBackendCalDAV *cbdav,
tmp = g_strconcat (g_uri_get_path (parsed_uri) && *g_uri_get_path (parsed_uri) ? g_uri_get_path
(parsed_uri) : "", "/", filename, NULL);
- nuri = soup_uri_copy (parsed_uri, SOUP_URI_PATH, tmp, SOUP_URI_NONE);
- g_uri_unref (parsed_uri);
- parsed_uri = nuri;
+ e_util_change_uri_component (&parsed_uri, SOUP_URI_PATH, tmp);
g_free (tmp);
diff --git a/src/calendar/backends/webdav-notes/e-cal-backend-webdav-notes.c
b/src/calendar/backends/webdav-notes/e-cal-backend-webdav-notes.c
index 3a2bd3910..2ae3199d3 100644
--- a/src/calendar/backends/webdav-notes/e-cal-backend-webdav-notes.c
+++ b/src/calendar/backends/webdav-notes/e-cal-backend-webdav-notes.c
@@ -750,7 +750,7 @@ ecb_webdav_notes_uid_to_uri (ECalBackendWebDAVNotes *cbnotes,
const gchar *uid)
{
ESourceWebdav *webdav_extension;
- GUri *parsed_uri, *nuri;
+ GUri *parsed_uri;
gchar *uri, *tmp, *filename, *uid_hash = NULL;
g_return_val_if_fail (E_IS_CAL_BACKEND_WEBDAV_NOTES (cbnotes), NULL);
@@ -782,10 +782,9 @@ ecb_webdav_notes_uid_to_uri (ECalBackendWebDAVNotes *cbnotes,
} else
tmp = g_strconcat ("/", filename, NULL);
- nuri = soup_uri_copy (parsed_uri, SOUP_URI_PATH, tmp, SOUP_URI_NONE);
+ e_util_change_uri_component (&parsed_uri, SOUP_URI_PATH, tmp);
uri = g_uri_to_string_partial (parsed_uri, G_URI_HIDE_USERINFO | G_URI_HIDE_PASSWORD);
- g_uri_unref (nuri);
g_uri_unref (parsed_uri);
g_free (filename);
g_free (uid_hash);
diff --git a/src/libedataserver/e-data-server-util.c b/src/libedataserver/e-data-server-util.c
index d52809bd7..9cc92ad72 100644
--- a/src/libedataserver/e-data-server-util.c
+++ b/src/libedataserver/e-data-server-util.c
@@ -31,6 +31,7 @@
#endif
#include <glib-object.h>
+#include <libsoup/soup.h>
#include "e-source.h"
#include "e-source-address-book.h"
@@ -3443,3 +3444,61 @@ e_util_get_directory_variants (const gchar *main_path,
return camel_util_get_directory_variants (main_path, replace_prefix, with_modules_dir);
}
+
+/**
+ * e_util_change_uri_component:
+ * @inout_uri: (inout): a #GUri
+ * @component: a string #SoupURIComponent to change
+ * @value: (nullable): a value to set, or %NULL to unset
+ *
+ * Changes component @component in the @inout_uri to value @value.
+ * As the #GUri cannot be modified the @inout_uri points to a new #GUri
+ * at the end of the call and the previous structure is unreffed.
+ *
+ * See: e_util_change_uri_port()
+ *
+ * Since: 3.44
+ **/
+void
+e_util_change_uri_component (GUri **inout_uri,
+ SoupURIComponent component,
+ const gchar *value)
+{
+ GUri *tmp;
+
+ g_return_if_fail (inout_uri != NULL);
+ g_return_if_fail (*inout_uri != NULL);
+ g_return_if_fail (component != SOUP_URI_PORT);
+ g_return_if_fail (component != SOUP_URI_NONE);
+
+ tmp = soup_uri_copy (*inout_uri, component, value, SOUP_URI_NONE);
+ g_uri_unref (*inout_uri);
+ *inout_uri = tmp;
+}
+
+/**
+ * e_util_change_uri_port:
+ * @inout_uri: (inout): a #GUri
+ * @port: the port number to set
+ *
+ * Changes the port in the @inout_uri to value @port.
+ * As the #GUri cannot be modified the @inout_uri points to a new #GUri
+ * at the end of the call and the previous structure is unreffed.
+ *
+ * See: e_util_change_uri_component()
+ *
+ * Since: 3.44
+ **/
+void
+e_util_change_uri_port (GUri **inout_uri,
+ gint port)
+{
+ GUri *tmp;
+
+ g_return_if_fail (inout_uri != NULL);
+ g_return_if_fail (*inout_uri != NULL);
+
+ tmp = soup_uri_copy (*inout_uri, SOUP_URI_PORT, port, SOUP_URI_NONE);
+ g_uri_unref (*inout_uri);
+ *inout_uri = tmp;
+}
diff --git a/src/libedataserver/e-data-server-util.h b/src/libedataserver/e-data-server-util.h
index 797760012..33acbd6b6 100644
--- a/src/libedataserver/e-data-server-util.h
+++ b/src/libedataserver/e-data-server-util.h
@@ -28,6 +28,7 @@
#include <sys/types.h>
#include <gio/gio.h>
+#include <libsoup/soup.h>
#include <libedataserver/e-source-enums.h>
@@ -298,6 +299,11 @@ gint e_util_source_compare_for_sort (struct _ESource *source_a,
GPtrArray * e_util_get_directory_variants (const gchar *main_path,
const gchar *replace_prefix,
gboolean with_modules_dir);
+void e_util_change_uri_component (GUri **inout_uri,
+ SoupURIComponent component,
+ const gchar *value);
+void e_util_change_uri_port (GUri **inout_uri,
+ gint port);
G_END_DECLS
diff --git a/src/libedataserver/e-webdav-discover.c b/src/libedataserver/e-webdav-discover.c
index c551357e5..1c1587572 100644
--- a/src/libedataserver/e-webdav-discover.c
+++ b/src/libedataserver/e-webdav-discover.c
@@ -825,23 +825,23 @@ e_webdav_discover_sources_full_sync (ESource *source,
{
ESourceWebdav *webdav_extension;
EWebDAVSession *webdav;
- GUri *g_uri, *nuri;
+ GUri *guri;
gboolean success;
g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
if (url_use_path && (g_ascii_strncasecmp (url_use_path, "http://", 7) == 0 ||
g_ascii_strncasecmp (url_use_path, "https://", 8) == 0)) {
- g_uri = g_uri_parse (url_use_path, SOUP_HTTP_URI_FLAGS, NULL);
+ guri = g_uri_parse (url_use_path, SOUP_HTTP_URI_FLAGS, NULL);
url_use_path = NULL;
} else {
g_return_val_if_fail (e_source_has_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND),
FALSE);
webdav_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);
- g_uri = e_source_webdav_dup_uri (webdav_extension);
+ guri = e_source_webdav_dup_uri (webdav_extension);
}
- g_return_val_if_fail (g_uri != NULL, FALSE);
+ g_return_val_if_fail (guri != NULL, FALSE);
if (url_use_path) {
GString *new_path;
@@ -852,7 +852,7 @@ e_webdav_discover_sources_full_sync (ESource *source,
} else {
const gchar *current_path;
- current_path = g_uri_get_path (g_uri);
+ current_path = g_uri_get_path (guri);
new_path = g_string_new (current_path ? current_path : "");
if (!new_path->len || new_path->str[new_path->len - 1] != '/')
g_string_append_c (new_path, '/');
@@ -862,9 +862,7 @@ e_webdav_discover_sources_full_sync (ESource *source,
if (!new_path->len || new_path->str[new_path->len - 1] != '/')
g_string_append_c (new_path, '/');
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, new_path->str, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, new_path->str);
g_string_free (new_path, TRUE);
}
@@ -872,7 +870,7 @@ e_webdav_discover_sources_full_sync (ESource *source,
webdav = e_webdav_session_new (source);
if (!e_webdav_discover_setup_proxy_resolver (webdav, source, ref_source_func,
ref_source_func_user_data, cancellable, error)) {
- g_uri_unref (g_uri);
+ g_uri_unref (guri);
g_object_unref (webdav);
return FALSE;
@@ -895,7 +893,7 @@ e_webdav_discover_sources_full_sync (ESource *source,
wdd.cancellable = cancellable;
wdd.error = &local_error;
- uri = g_uri_to_string_partial (g_uri, G_URI_HIDE_PASSWORD);
+ uri = g_uri_to_string_partial (guri, G_URI_HIDE_PASSWORD);
success = uri && *uri && e_webdav_discover_propfind_uri_sync (webdav, &wdd, uri, FALSE);
@@ -906,17 +904,15 @@ e_webdav_discover_sources_full_sync (ESource *source,
if (!fatal_error && !g_cancellable_is_cancelled (cancellable) && !wdd.calendars &&
((only_supports & (~CUSTOM_SUPPORTS_FLAGS)) == E_WEBDAV_DISCOVER_SUPPORTS_NONE ||
(only_supports & (E_WEBDAV_DISCOVER_SUPPORTS_EVENTS | E_WEBDAV_DISCOVER_SUPPORTS_MEMOS |
E_WEBDAV_DISCOVER_SUPPORTS_TASKS)) != 0) &&
- (!g_uri_get_path (g_uri) || !strstr (g_uri_get_path (g_uri), "/.well-known/"))) {
+ (!g_uri_get_path (guri) || !strstr (g_uri_get_path (guri), "/.well-known/"))) {
gchar *saved_path;
GError *local_error_2nd = NULL;
- saved_path = g_strdup (g_uri_get_path (g_uri));
+ saved_path = g_strdup (g_uri_get_path (guri));
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, "/.well-known/caldav", SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, "/.well-known/caldav");
- uri = g_uri_to_string_partial (g_uri, SOUP_HTTP_URI_FLAGS);
+ uri = g_uri_to_string_partial (guri, SOUP_HTTP_URI_FLAGS);
wdd.error = &local_error_2nd;
wdd.only_supports = E_WEBDAV_DISCOVER_SUPPORTS_EVENTS |
E_WEBDAV_DISCOVER_SUPPORTS_MEMOS | E_WEBDAV_DISCOVER_SUPPORTS_TASKS;
@@ -928,9 +924,8 @@ e_webdav_discover_sources_full_sync (ESource *source,
fatal_error = e_webdav_discover_is_fatal_error (local_error_2nd);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, saved_path, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, saved_path);
+
g_free (saved_path);
if (e_webdav_discover_maybe_replace_auth_error (&local_error, &local_error_2nd))
@@ -944,17 +939,15 @@ e_webdav_discover_sources_full_sync (ESource *source,
if (!fatal_error && !g_cancellable_is_cancelled (cancellable) &&
((only_supports & (~CUSTOM_SUPPORTS_FLAGS)) == E_WEBDAV_DISCOVER_SUPPORTS_NONE ||
(only_supports & (E_WEBDAV_DISCOVER_SUPPORTS_WEBDAV_NOTES)) != 0) &&
- (!g_uri_get_path (g_uri) || !strstr (g_uri_get_path (g_uri), "/.well-known/"))) {
+ (!g_uri_get_path (guri) || !strstr (g_uri_get_path (guri), "/.well-known/"))) {
gchar *saved_path;
GError *local_error_2nd = NULL;
- saved_path = g_strdup (g_uri_get_path (g_uri));
+ saved_path = g_strdup (g_uri_get_path (guri));
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, "/.well-known/webdav/Notes/",
SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, "/.well-known/webdav/Notes/");
- uri = g_uri_to_string_partial (g_uri, G_URI_HIDE_PASSWORD);
+ uri = g_uri_to_string_partial (guri, G_URI_HIDE_PASSWORD);
wdd.error = &local_error_2nd;
wdd.only_supports = E_WEBDAV_DISCOVER_SUPPORTS_WEBDAV_NOTES;
@@ -966,9 +959,8 @@ e_webdav_discover_sources_full_sync (ESource *source,
fatal_error = e_webdav_discover_is_fatal_error (local_error_2nd);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, saved_path, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, saved_path);
+
g_free (saved_path);
if (e_webdav_discover_maybe_replace_auth_error (&local_error, &local_error_2nd))
@@ -982,17 +974,15 @@ e_webdav_discover_sources_full_sync (ESource *source,
if (!fatal_error && !g_cancellable_is_cancelled (cancellable) && !wdd.addressbooks &&
((only_supports & (~CUSTOM_SUPPORTS_FLAGS)) == E_WEBDAV_DISCOVER_SUPPORTS_NONE ||
(only_supports & (E_WEBDAV_DISCOVER_SUPPORTS_CONTACTS)) != 0) &&
- (!g_uri_get_path (g_uri) || !strstr (g_uri_get_path (g_uri), "/.well-known/"))) {
+ (!g_uri_get_path (guri) || !strstr (g_uri_get_path (guri), "/.well-known/"))) {
gchar *saved_path;
GError *local_error_2nd = NULL;
- saved_path = g_strdup (g_uri_get_path (g_uri));
+ saved_path = g_strdup (g_uri_get_path (guri));
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, "/.well-known/carddav", SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, "/.well-known/carddav");
- uri = g_uri_to_string_partial (g_uri, SOUP_HTTP_URI_FLAGS);
+ uri = g_uri_to_string_partial (guri, SOUP_HTTP_URI_FLAGS);
wdd.error = &local_error_2nd;
wdd.only_supports = E_WEBDAV_DISCOVER_SUPPORTS_CONTACTS;
@@ -1002,9 +992,8 @@ e_webdav_discover_sources_full_sync (ESource *source,
g_free (uri);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, saved_path, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, saved_path);
+
g_free (saved_path);
fatal_error = e_webdav_discover_is_fatal_error (local_error_2nd);
@@ -1077,7 +1066,7 @@ e_webdav_discover_sources_full_sync (ESource *source,
if (!success)
e_soup_session_get_ssl_error_details (E_SOUP_SESSION (webdav), out_certificate_pem,
out_certificate_errors);
- g_uri_unref (g_uri);
+ g_uri_unref (guri);
g_object_unref (webdav);
return success;
diff --git a/src/libedataserver/e-webdav-session.c b/src/libedataserver/e-webdav-session.c
index 8f435e102..35da0d493 100644
--- a/src/libedataserver/e-webdav-session.c
+++ b/src/libedataserver/e-webdav-session.c
@@ -712,7 +712,7 @@ e_webdav_session_new_message (EWebDAVSession *webdav,
{
ESoupSession *session;
SoupMessage *message;
- GUri *g_uri, *nuri;
+ GUri *guri;
ESource *source;
ESourceWebdav *webdav_extension;
const gchar *path;
@@ -733,26 +733,24 @@ e_webdav_session_new_message (EWebDAVSession *webdav,
}
webdav_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);
- g_uri = e_source_webdav_dup_uri (webdav_extension);
+ guri = e_source_webdav_dup_uri (webdav_extension);
- g_return_val_if_fail (g_uri != NULL, NULL);
+ g_return_val_if_fail (guri != NULL, NULL);
/* The URI in the ESource should be to a collection, with an ending
forward slash, thus ensure it's there. */
- path = g_uri_get_path (g_uri);
+ path = g_uri_get_path (guri);
if (!path || !*path || !g_str_has_suffix (path, "/")) {
gchar *new_path;
new_path = g_strconcat (path ? path : "", "/", NULL);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, new_path, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, new_path);
g_free (new_path);
}
- message = e_soup_session_new_message_uri (session, method, g_uri, error);
+ message = e_soup_session_new_message_uri (session, method, guri, error);
- g_uri_unref (g_uri);
+ g_uri_unref (guri);
return message;
}
@@ -1112,11 +1110,11 @@ e_webdav_session_ensure_full_uri (EWebDAVSession *webdav,
g_return_val_if_fail (href != NULL, NULL);
if (*href == '/' || !strstr (href, "://")) {
- GUri *g_uri, *nuri;
+ GUri *guri;
gchar *full_uri;
if (request_uri) {
- g_uri = g_uri_ref ((GUri *) request_uri);
+ guri = g_uri_ref ((GUri *) request_uri);
} else {
ESource *source;
ESourceWebdav *webdav_extension;
@@ -1128,18 +1126,15 @@ e_webdav_session_ensure_full_uri (EWebDAVSession *webdav,
return g_strdup (href);
webdav_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);
- g_uri = e_source_webdav_dup_uri (webdav_extension);
+ guri = e_source_webdav_dup_uri (webdav_extension);
}
- g_return_val_if_fail (g_uri != NULL, NULL);
+ g_return_val_if_fail (guri != NULL, NULL);
- nuri = soup_uri_copy (g_uri, SOUP_URI_PATH, href, SOUP_URI_NONE);
- g_uri_unref (g_uri);
- g_uri = nuri;
- full_uri = g_uri_to_string_partial (g_uri, G_URI_HIDE_PASSWORD |
- G_URI_HIDE_USERINFO);
+ e_util_change_uri_component (&guri, SOUP_URI_PATH, href);
+ full_uri = g_uri_to_string_partial (guri, G_URI_HIDE_PASSWORD | G_URI_HIDE_USERINFO);
- g_uri_unref (g_uri);
+ g_uri_unref (guri);
return full_uri;
}
diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
index ab9af2639..1499535fe 100644
--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
@@ -73,7 +73,7 @@ cpi_oauth2_create_auth_uri (EOAuth2Service *service,
ESource *source)
{
GHashTable *uri_query;
- GUri *parsed_uri, *nuri;
+ GUri *parsed_uri;
gchar *uri, *query;
g_return_val_if_fail (E_IS_OAUTH2_SERVICE (service), NULL);
@@ -87,11 +87,10 @@ cpi_oauth2_create_auth_uri (EOAuth2Service *service,
e_oauth2_service_prepare_authentication_uri_query (service, source, uri_query);
query = soup_form_encode_hash (uri_query);
- nuri = soup_uri_copy (parsed_uri, SOUP_URI_QUERY, query, SOUP_URI_NONE);
+ e_util_change_uri_component (&parsed_uri, SOUP_URI_QUERY, query);
uri = g_uri_to_string_partial (parsed_uri, G_URI_HIDE_PASSWORD);
- g_uri_unref (nuri);
g_uri_unref (parsed_uri);
g_hash_table_destroy (uri_query);
diff --git a/src/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
b/src/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
index 038030ca5..a2998f68f 100644
--- a/src/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
+++ b/src/services/evolution-source-registry/evolution-source-registry-migrate-sources.c
@@ -2270,12 +2270,8 @@ migrate_parse_caldav_source (ParseData *parse_data)
"Host", g_uri_get_host (parse_data->parsed_uri));
/* We may override this later if we see an "ssl" property. */
- if (g_uri_get_port (parse_data->parsed_uri) < 0) {
- GUri *nuri = soup_uri_copy (parse_data->parsed_uri,
- SOUP_URI_PORT, 80, SOUP_URI_NONE);
- g_uri_unref (parse_data->parsed_uri);
- parse_data->parsed_uri = nuri;
- }
+ if (g_uri_get_port (parse_data->parsed_uri) < 0)
+ e_util_change_uri_port (&parse_data->parsed_uri, 80);
g_key_file_set_integer (
parse_data->key_file,
@@ -2528,12 +2524,8 @@ migrate_parse_webcal_source (ParseData *parse_data)
"Host", g_uri_get_host (parse_data->parsed_uri));
/* We may override this later if we see an "ssl" property. */
- if (g_uri_get_port (parse_data->parsed_uri) < 0) {
- GUri *nuri = soup_uri_copy (parse_data->parsed_uri,
- SOUP_URI_PORT, 80, SOUP_URI_NONE);
- g_uri_unref (parse_data->parsed_uri);
- parse_data->parsed_uri = nuri;
- }
+ if (g_uri_get_port (parse_data->parsed_uri) < 0)
+ e_util_change_uri_port (&parse_data->parsed_uri, 80);
g_key_file_set_integer (
parse_data->key_file,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]