summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2007-11-29 23:20:42 +0000
committerDan Winship <danw@src.gnome.org>2007-11-29 23:20:42 +0000
commita3b3d382c0b5ff6978b9437bd2fe607681d718ba (patch)
tree2c22af04033e9d07e6b4c5d2945c20be4a6e4e5b
parent0eb4ce925a419aa89162c03c0ad19c8bf9faf477 (diff)
downloadlibsoup-a3b3d382c0b5ff6978b9437bd2fe607681d718ba.tar.gz
Make SoupMessage's uri property and SoupSession's proxy_uri property use a
* libsoup/soup-message.c: * libsoup/soup-session.c: Make SoupMessage's uri property and SoupSession's proxy_uri property use a boxed pspec * libsoup/soup-uri.c: make SoupUri a boxed type * python/libsoup.defs (Uri): add boxed SoupUri svn path=/branches/libsoup-bindings/; revision=966
-rw-r--r--ChangeLog10
-rw-r--r--libsoup/soup-message.c16
-rw-r--r--libsoup/soup-session.c21
-rw-r--r--libsoup/soup-uri.c14
-rw-r--r--libsoup/soup-uri.h3
-rw-r--r--python/libsoup.defs19
6 files changed, 63 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d6a0def..72c0fcab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2007-11-29 Dan Winship <danw@gnome.org>
+ * libsoup/soup-message.c:
+ * libsoup/soup-session.c: Make SoupMessage's uri property and
+ SoupSession's proxy_uri property use a boxed pspec
+
+ * libsoup/soup-uri.c: make SoupUri a boxed type
+
+ * python/libsoup.defs (Uri): add boxed SoupUri
+
+2007-11-29 Dan Winship <danw@gnome.org>
+
* libsoup/soup-message.c: use GObject properties for SoupMessage
fields.
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index 80c70196..26fc9573 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -303,10 +303,11 @@ soup_message_class_init (SoupMessageClass *message_class)
G_PARAM_READWRITE));
g_object_class_install_property (
object_class, PROP_URI,
- g_param_spec_pointer (SOUP_MESSAGE_URI,
- "URI",
- "The message's Request-URI",
- G_PARAM_READWRITE));
+ g_param_spec_boxed (SOUP_MESSAGE_URI,
+ "URI",
+ "The message's Request-URI",
+ SOUP_TYPE_URI,
+ G_PARAM_READWRITE));
g_object_class_install_property (
object_class, PROP_HTTP_VERSION,
g_param_spec_enum (SOUP_MESSAGE_HTTP_VERSION,
@@ -350,7 +351,7 @@ set_property (GObject *object, guint prop_id,
msg->method = g_intern_string (g_value_get_string (value));
break;
case PROP_URI:
- soup_message_set_uri (msg, g_value_get_pointer (value));
+ soup_message_set_uri (msg, g_value_get_boxed (value));
break;
case PROP_HTTP_VERSION:
soup_message_set_http_version (msg, g_value_get_enum (value));
@@ -382,10 +383,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, msg->method);
break;
case PROP_URI:
- if (priv->uri)
- g_value_set_pointer (value, soup_uri_copy (priv->uri));
- else
- g_value_set_pointer (value, NULL);
+ g_value_set_boxed (value, priv->uri);
break;
case PROP_HTTP_VERSION:
g_value_set_enum (value, priv->http_version);
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index 37c19004..f0fb4281 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -300,10 +300,11 @@ soup_session_class_init (SoupSessionClass *session_class)
/* properties */
g_object_class_install_property (
object_class, PROP_PROXY_URI,
- g_param_spec_pointer (SOUP_SESSION_PROXY_URI,
- "Proxy URI",
- "The HTTP Proxy to use for this session",
- G_PARAM_READWRITE));
+ g_param_spec_boxed (SOUP_SESSION_PROXY_URI,
+ "Proxy URI",
+ "The HTTP Proxy to use for this session",
+ SOUP_TYPE_URI,
+ G_PARAM_READWRITE));
g_object_class_install_property (
object_class, PROP_MAX_CONNS,
g_param_spec_int (SOUP_SESSION_MAX_CONNS,
@@ -389,22 +390,22 @@ set_property (GObject *object, guint prop_id,
{
SoupSession *session = SOUP_SESSION (object);
SoupSessionPrivate *priv = SOUP_SESSION_GET_PRIVATE (session);
- gpointer pval;
+ SoupUri *uri;
gboolean need_abort = FALSE;
gboolean ca_file_changed = FALSE;
const char *new_ca_file;
switch (prop_id) {
case PROP_PROXY_URI:
- pval = g_value_get_pointer (value);
+ uri = g_value_get_boxed (value);
- if (!safe_uri_equal (priv->proxy_uri, pval))
+ if (!safe_uri_equal (priv->proxy_uri, uri))
need_abort = TRUE;
if (priv->proxy_uri)
soup_uri_free (priv->proxy_uri);
- priv->proxy_uri = pval ? soup_uri_copy (pval) : NULL;
+ priv->proxy_uri = uri ? soup_uri_copy (uri) : NULL;
if (need_abort) {
soup_session_abort (session);
@@ -462,9 +463,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PROXY_URI:
- g_value_set_pointer (value, priv->proxy_uri ?
- soup_uri_copy (priv->proxy_uri) :
- NULL);
+ g_value_set_boxed (value, priv->proxy_uri);
break;
case PROP_MAX_CONNS:
g_value_set_int (value, priv->max_conns);
diff --git a/libsoup/soup-uri.c b/libsoup/soup-uri.c
index ecbf6a9d..6a105707 100644
--- a/libsoup/soup-uri.c
+++ b/libsoup/soup-uri.c
@@ -532,3 +532,17 @@ soup_uri_uses_default_port (const SoupUri *uri)
{
return uri->port == soup_protocol_default_port (uri->protocol);
}
+
+GType
+soup_uri_get_type (void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ type = g_boxed_type_register_static (
+ g_intern_static_string ("SoupUri"),
+ (GBoxedCopyFunc)soup_uri_copy,
+ (GBoxedFreeFunc)soup_uri_free);
+ }
+ return type;
+}
diff --git a/libsoup/soup-uri.h b/libsoup/soup-uri.h
index c9c9e787..832160e9 100644
--- a/libsoup/soup-uri.h
+++ b/libsoup/soup-uri.h
@@ -53,6 +53,9 @@ struct SoupUri {
gboolean broken_encoding;
};
+GType soup_uri_get_type (void);
+#define SOUP_TYPE_URI (soup_uri_get_type ())
+
SoupUri *soup_uri_new_with_base (const SoupUri *base,
const char *uri_string);
SoupUri *soup_uri_new (const char *uri_string);
diff --git a/python/libsoup.defs b/python/libsoup.defs
index 1f09d64b..60eb5d45 100644
--- a/python/libsoup.defs
+++ b/python/libsoup.defs
@@ -2190,6 +2190,25 @@
;; From soup-uri.h
+(define-boxed Uri
+ (in-module "Soup")
+ (c-name "SoupUri")
+ (gtype-id "SOUP_TYPE_URI")
+ (copy-func "soup_uri_copy")
+ (release-func "soup_uri_free")
+ (fields
+ '("guint" "protocol")
+ '("char*" "user")
+ '("char*" "passwd")
+ '("char*" "host")
+ '("guint" "port")
+ '("char*" "path")
+ '("char*" "query")
+ '("char*" "fragment")
+ '("gboolean" "broken_encoding")
+ )
+)
+
(define-method new_with_base
(of-object "SoupUri")
(c-name "soup_uri_new_with_base")