summaryrefslogtreecommitdiff
path: root/rest
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2021-06-08 10:57:06 +0200
committerGünther Wagner <info@gunibert.de>2021-11-04 21:39:51 +0100
commite55578092e347a4fce887d5a278dc007204fa5cd (patch)
tree8e220e393dc4451708e0384c3ef5617b0ff989cb /rest
parent01b71d516e5e6ababa51259e1e419b4432abec2f (diff)
downloadlibrest-e55578092e347a4fce887d5a278dc007204fa5cd.tar.gz
Use GUri instead of SoupURI
Diffstat (limited to 'rest')
-rw-r--r--rest/oauth-proxy-call.c19
-rw-r--r--rest/oauth2-proxy.c22
2 files changed, 25 insertions, 16 deletions
diff --git a/rest/oauth-proxy-call.c b/rest/oauth-proxy-call.c
index c90c69d..e238c3c 100644
--- a/rest/oauth-proxy-call.c
+++ b/rest/oauth-proxy-call.c
@@ -30,7 +30,7 @@
G_DEFINE_TYPE (OAuthProxyCall, oauth_proxy_call, REST_TYPE_PROXY_CALL)
-#define OAUTH_ENCODE_STRING(x_) (x_ ? soup_uri_encode( (x_), "!$&'()*+,;=@") : g_strdup (""))
+#define OAUTH_ENCODE_STRING(x_) (x_ ? g_uri_escape_string( (x_), NULL, TRUE) : g_strdup (""))
static char *
sign_plaintext (OAuthProxyPrivate *priv)
@@ -136,15 +136,24 @@ sign_hmac (OAuthProxy *proxy, RestProxyCall *call, GHashTable *oauth_params)
if (priv->oauth_echo) {
g_string_append_uri_escaped (text, priv->service_url, NULL, FALSE);
} else if (priv->signature_host != NULL) {
- SoupURI *url = soup_uri_new (url_str);
+ GUri *url = g_uri_parse (url_str, G_URI_FLAGS_ENCODED, NULL);
+ GUri *new_url;
gchar *signing_url;
- soup_uri_set_host (url, priv->signature_host);
- signing_url = soup_uri_to_string (url, FALSE);
+ new_url = g_uri_build (g_uri_get_flags (url),
+ g_uri_get_scheme (url),
+ g_uri_get_userinfo (url),
+ priv->signature_host,
+ g_uri_get_port (url),
+ g_uri_get_path (url),
+ g_uri_get_query (url),
+ g_uri_get_fragment (url));
+ signing_url = g_uri_to_string (new_url);
g_string_append_uri_escaped (text, signing_url, NULL, FALSE);
- soup_uri_free (url);
+ g_uri_unref (new_url);
+ g_uri_unref (url);
g_free (signing_url);
} else {
g_string_append_uri_escaped (text, url_str, NULL, FALSE);
diff --git a/rest/oauth2-proxy.c b/rest/oauth2-proxy.c
index 24e5da0..3382f8b 100644
--- a/rest/oauth2-proxy.c
+++ b/rest/oauth2-proxy.c
@@ -37,8 +37,6 @@ oauth2_proxy_error_quark (void)
return g_quark_from_static_string ("rest-oauth2-proxy");
}
-#define EXTRA_CHARS_ENCODE "!$&'()*+,;=@"
-
enum {
PROP_0,
PROP_CLIENT_ID,
@@ -242,8 +240,8 @@ append_query_param (gpointer key, gpointer value, gpointer user_data)
char *encoded_val, *encoded_key;
char *param;
- encoded_val = soup_uri_encode (value, EXTRA_CHARS_ENCODE);
- encoded_key = soup_uri_encode (key, EXTRA_CHARS_ENCODE);
+ encoded_val = g_uri_escape_string (value, NULL, TRUE);
+ encoded_key = g_uri_escape_string (key, NULL, TRUE);
param = g_strdup_printf ("%s=%s", encoded_key, encoded_val);
g_free (encoded_key);
@@ -295,8 +293,8 @@ oauth2_proxy_build_login_url_full (OAuth2Proxy *proxy,
g_hash_table_foreach (extra_params, append_query_param, params);
}
- encoded_uri = soup_uri_encode (redirect_uri, EXTRA_CHARS_ENCODE);
- encoded_id = soup_uri_encode (proxy->priv->client_id, EXTRA_CHARS_ENCODE);
+ encoded_uri = g_uri_escape_string (redirect_uri, NULL, TRUE);
+ encoded_id = g_uri_escape_string (proxy->priv->client_id, NULL, TRUE);
url = g_strdup_printf ("%s?client_id=%s&redirect_uri=%s&type=user_agent",
proxy->priv->auth_endpoint, encoded_id,
@@ -378,20 +376,22 @@ oauth2_proxy_extract_access_token (const char *url)
{
GHashTable *params;
char *token = NULL;
- SoupURI *soupuri = soup_uri_new (url);
+ const char *fragment;
+ GUri *uri = g_uri_parse (url, G_URI_FLAGS_ENCODED, NULL);
- if (soupuri->fragment != NULL) {
- params = soup_form_decode (soupuri->fragment);
+ fragment = g_uri_get_fragment (uri);
+ if (fragment != NULL) {
+ params = soup_form_decode (fragment);
if (params) {
char *encoded = g_hash_table_lookup (params, "access_token");
if (encoded)
- token = soup_uri_decode (encoded);
+ token = g_uri_unescape_string (encoded, NULL);
g_hash_table_destroy (params);
}
}
- soup_uri_free (soupuri);
+ g_uri_unref (uri);
return token;
}