diff options
author | Jens Georg <mail@jensge.org> | 2017-05-07 15:50:42 +0200 |
---|---|---|
committer | Jiří Techet <techet@gmail.com> | 2017-05-20 22:19:31 +0200 |
commit | 481ec72b2b9401761c2b61e41be3edf13644f9ff (patch) | |
tree | 39d4f8c19c404dda83035d29a8ce8dfb8dff6433 /champlain | |
parent | b76777f31ce4a1a550aebac6e18b3371a81d6cb4 (diff) | |
download | libchamplain-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.c | 46 | ||||
-rw-r--r-- | champlain/champlain-network-bbox-tile-source.h | 4 | ||||
-rw-r--r-- | champlain/champlain-network-tile-source.c | 43 | ||||
-rw-r--r-- | champlain/champlain-network-tile-source.h | 1 |
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 |