summaryrefslogtreecommitdiff
path: root/champlain
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2017-05-07 15:50:42 +0200
committerJiří Techet <techet@gmail.com>2017-05-20 22:19:31 +0200
commit481ec72b2b9401761c2b61e41be3edf13644f9ff (patch)
tree39d4f8c19c404dda83035d29a8ce8dfb8dff6433 /champlain
parentb76777f31ce4a1a550aebac6e18b3371a81d6cb4 (diff)
downloadlibchamplain-481ec72b2b9401761c2b61e41be3edf13644f9ff.tar.gz
Add possibility to set User-Agent for requests
https://bugzilla.gnome.org/show_bug.cgi?id=782297
Diffstat (limited to 'champlain')
-rw-r--r--champlain/champlain-network-bbox-tile-source.c46
-rw-r--r--champlain/champlain-network-bbox-tile-source.h4
-rw-r--r--champlain/champlain-network-tile-source.c43
-rw-r--r--champlain/champlain-network-tile-source.h1
4 files changed, 92 insertions, 2 deletions
diff --git a/champlain/champlain-network-bbox-tile-source.c b/champlain/champlain-network-bbox-tile-source.c
index 2502a45..8257457 100644
--- a/champlain/champlain-network-bbox-tile-source.c
+++ b/champlain/champlain-network-bbox-tile-source.c
@@ -50,7 +50,8 @@ enum
PROP_0,
PROP_API_URI,
PROP_PROXY_URI,
- PROP_STATE
+ PROP_STATE,
+ PROP_USER_AGENT
};
struct _ChamplainNetworkBboxTileSourcePrivate
@@ -127,6 +128,11 @@ champlain_network_bbox_tile_source_set_property (GObject *object,
g_object_notify (G_OBJECT (self), "state");
break;
+ case PROP_USER_AGENT:
+ champlain_network_bbox_tile_source_set_user_agent (self,
+ g_value_get_string (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -225,6 +231,21 @@ champlain_network_bbox_tile_source_class_init (ChamplainNetworkBboxTileSourceCla
CHAMPLAIN_TYPE_STATE,
CHAMPLAIN_STATE_NONE,
G_PARAM_READWRITE));
+
+ /**
+ * ChamplainNetworkBboxTileSource:user-agent:
+ *
+ * The HTTP user agent used for requests
+ *
+ * Since: 0.12.16
+ */
+ g_object_class_install_property (object_class,
+ PROP_USER_AGENT,
+ g_param_spec_string ("user-agent",
+ "HTTP User Agent",
+ "The HTTP user agent used for network requests",
+ "libchamplain/" CHAMPLAIN_VERSION_S,
+ G_PARAM_WRITABLE));
}
@@ -480,3 +501,26 @@ champlain_network_bbox_tile_source_set_api_uri (
priv->api_uri = g_strdup (api_uri);
g_object_notify (G_OBJECT (self), "api-uri");
}
+
+/**
+ * champlain_network_bbox_tile_source_set_user_agent:
+ * @map_data_source: a #ChamplainNetworkBboxTileSource
+ * @user_agent: A User-Agent string
+ *
+ * Sets the User-Agent header used communicating with the server.
+ * Since: 0.12.16
+ */
+void
+champlain_network_bbox_tile_source_set_user_agent (
+ ChamplainNetworkBboxTileSource *self,
+ const gchar *user_agent)
+{
+ g_return_if_fail (CHAMPLAIN_IS_NETWORK_BBOX_TILE_SOURCE (self)
+ && user_agent != NULL);
+
+ ChamplainNetworkBboxTileSourcePrivate *priv = self->priv;
+
+ if (priv->soup_session)
+ g_object_set (G_OBJECT (priv->soup_session), "user-agent",
+ user_agent, NULL);
+}
diff --git a/champlain/champlain-network-bbox-tile-source.h b/champlain/champlain-network-bbox-tile-source.h
index 4bc0a4c..903145e 100644
--- a/champlain/champlain-network-bbox-tile-source.h
+++ b/champlain/champlain-network-bbox-tile-source.h
@@ -92,6 +92,10 @@ void champlain_network_bbox_tile_source_set_api_uri (
ChamplainNetworkBboxTileSource *map_data_source,
const gchar *api_uri);
+void champlain_network_bbox_tile_source_set_user_agent (
+ ChamplainNetworkBboxTileSource *map_data_source,
+ const gchar *user_agent);
+
G_END_DECLS
#endif /* _CHAMPLAIN_NETWORK_BBOX_TILE_SOURCE */
diff --git a/champlain/champlain-network-tile-source.c b/champlain/champlain-network-tile-source.c
index 4463470..341ad3c 100644
--- a/champlain/champlain-network-tile-source.c
+++ b/champlain/champlain-network-tile-source.c
@@ -62,7 +62,8 @@ enum
PROP_URI_FORMAT,
PROP_OFFLINE,
PROP_PROXY_URI,
- PROP_MAX_CONNS
+ PROP_MAX_CONNS,
+ PROP_USER_AGENT
};
G_DEFINE_TYPE (ChamplainNetworkTileSource, champlain_network_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE);
@@ -173,6 +174,10 @@ champlain_network_tile_source_set_property (GObject *object,
champlain_network_tile_source_set_max_conns (tile_source, g_value_get_int (value));
break;
+ case PROP_USER_AGENT:
+ champlain_network_tile_source_set_user_agent (tile_source, g_value_get_string (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -295,6 +300,20 @@ champlain_network_tile_source_class_init (ChamplainNetworkTileSourceClass *klass
g_object_class_install_property (object_class, PROP_MAX_CONNS, pspec);
+ /**
+ * ChamplainNetworkTileSource:user-agent:
+ *
+ * The HTTP user agent used for requests
+ *
+ * Since: 0.12.16
+ */
+ pspec = g_param_spec_string ("user-agent",
+ "HTTP User Agent",
+ "The HTTP user agent used for network requests",
+ "libchamplain/" CHAMPLAIN_VERSION_S,
+ G_PARAM_WRITABLE);
+
+ g_object_class_install_property (object_class, PROP_USER_AGENT, pspec);
}
@@ -572,6 +591,28 @@ champlain_network_tile_source_set_max_conns (ChamplainNetworkTileSource *tile_so
g_object_notify (G_OBJECT (tile_source), "max_conns");
}
+/**
+ * champlain_network_tile_source_set_user_agent:
+ * @map_data_source: a #ChamplainNetworkTileSource
+ * @user_agent: A User-Agent string
+ *
+ * Sets the User-Agent header used communicating with the server.
+ * Since: 0.12.16
+ */
+void
+champlain_network_tile_source_set_user_agent (
+ ChamplainNetworkTileSource *tile_source,
+ const gchar *user_agent)
+{
+ g_return_if_fail (CHAMPLAIN_IS_NETWORK_TILE_SOURCE (tile_source)
+ && user_agent != NULL);
+
+ ChamplainNetworkTileSourcePrivate *priv = tile_source->priv;
+
+ if (priv->soup_session)
+ g_object_set (G_OBJECT (priv->soup_session), "user-agent",
+ user_agent, NULL);
+}
#define SIZE 8
static gchar *
diff --git a/champlain/champlain-network-tile-source.h b/champlain/champlain-network-tile-source.h
index 7c29b3e..8d8f1a9 100644
--- a/champlain/champlain-network-tile-source.h
+++ b/champlain/champlain-network-tile-source.h
@@ -100,6 +100,7 @@ gint champlain_network_tile_source_get_max_conns (ChamplainNetworkTileSource *ti
void champlain_network_tile_source_set_max_conns (ChamplainNetworkTileSource *tile_source,
gint max_conns);
+void champlain_network_tile_source_set_user_agent (ChamplainNetworkTileSource *self, const gchar *user_agent);
G_END_DECLS