diff options
| author | Carlos Garcia Campos <cgarcia@igalia.com> | 2021-03-29 14:55:22 +0200 |
|---|---|---|
| committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2021-03-29 14:55:22 +0200 |
| commit | bed823d1249a7eb7884c5d03ebceecbf9f1c099a (patch) | |
| tree | c57cc5750a7b8348b2f6057dd55d75af3c3f98ec | |
| parent | 05910f8cb577682d444b0abaef670b4eb028e2fa (diff) | |
| download | libsoup-bed823d1249a7eb7884c5d03ebceecbf9f1c099a.tar.gz | |
message: rename options-ping property as is-options-ping
And add public getter, setter and constructor.
| -rw-r--r-- | docs/reference/libsoup-3.0-sections.txt | 4 | ||||
| -rw-r--r-- | libsoup/soup-message-io.c | 2 | ||||
| -rw-r--r-- | libsoup/soup-message-private.h | 2 | ||||
| -rw-r--r-- | libsoup/soup-message.c | 99 | ||||
| -rw-r--r-- | libsoup/soup-message.h | 10 | ||||
| -rw-r--r-- | tests/server-test.c | 16 |
6 files changed, 102 insertions, 31 deletions
diff --git a/docs/reference/libsoup-3.0-sections.txt b/docs/reference/libsoup-3.0-sections.txt index c15bda3d..77e03b56 100644 --- a/docs/reference/libsoup-3.0-sections.txt +++ b/docs/reference/libsoup-3.0-sections.txt @@ -11,6 +11,10 @@ soup_message_new_from_multipart soup_message_set_request_body soup_message_set_request_body_from_bytes <SUBSECTION> +soup_message_new_options_ping +soup_message_get_is_options_ping +soup_message_set_is_options_ping +<SUBSECTION> SoupHTTPVersion soup_message_get_http_version soup_message_get_uri diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c index b7fd834e..8aef3170 100644 --- a/libsoup/soup-message-io.c +++ b/libsoup/soup-message-io.c @@ -279,7 +279,7 @@ write_headers (SoupMessage *msg, */ if (proxy) uri_string = g_uri_to_string (uri); - else if (soup_message_is_options_ping (msg)) + else if (soup_message_get_is_options_ping (msg)) uri_string = g_strdup ("*"); else uri_string = soup_uri_get_path_and_query (uri); diff --git a/libsoup/soup-message-private.h b/libsoup/soup-message-private.h index 6cbd5ff9..93e45d9e 100644 --- a/libsoup/soup-message-private.h +++ b/libsoup/soup-message-private.h @@ -140,8 +140,6 @@ void soup_message_set_reason_phrase (SoupMessage *ms void soup_message_set_method (SoupMessage *msg, const char *method); -gboolean soup_message_is_options_ping (SoupMessage *msg); - void soup_message_set_http_version (SoupMessage *msg, SoupHTTPVersion version); diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c index eab0c4af..e52cfde1 100644 --- a/libsoup/soup-message.c +++ b/libsoup/soup-message.c @@ -91,7 +91,7 @@ typedef struct { SoupMessagePriority priority; gboolean is_top_level_navigation; - gboolean options_ping; + gboolean is_options_ping; } SoupMessagePrivate; G_DEFINE_TYPE_WITH_PRIVATE (SoupMessage, soup_message, G_TYPE_OBJECT) @@ -137,7 +137,7 @@ enum { PROP_PRIORITY, PROP_SITE_FOR_COOKIES, PROP_IS_TOP_LEVEL_NAVIGATION, - PROP_OPTIONS_PING, + PROP_IS_OPTIONS_PING, LAST_PROP }; @@ -189,7 +189,6 @@ soup_message_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { SoupMessage *msg = SOUP_MESSAGE (object); - SoupMessagePrivate *priv = soup_message_get_instance_private (msg); switch (prop_id) { case PROP_METHOD: @@ -216,8 +215,8 @@ soup_message_set_property (GObject *object, guint prop_id, case PROP_PRIORITY: soup_message_set_priority (msg, g_value_get_enum (value)); break; - case PROP_OPTIONS_PING: - priv->options_ping = g_value_get_boolean (value); + case PROP_IS_OPTIONS_PING: + soup_message_set_is_options_ping (msg, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -275,8 +274,8 @@ soup_message_get_property (GObject *object, guint prop_id, case PROP_PRIORITY: g_value_set_enum (value, priv->priority); break; - case PROP_OPTIONS_PING: - g_value_set_boolean (value, priv->options_ping); + case PROP_IS_OPTIONS_PING: + g_value_set_boolean (value, priv->is_options_ping); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -754,16 +753,17 @@ soup_message_class_init (SoupMessageClass *message_class) G_PARAM_STATIC_STRINGS)); /** - * SoupMessage:options-ping: + * SoupMessage:is-options-ping: * * The #SoupMessage is intended to be used to send - * `OPTIONS *` to a server and the path of - * #SoupMessage:uri will be ignored. + * `OPTIONS *` to a server. When set to %TRUE, the + * path of #SoupMessage:uri will be ignored and + * #SoupMessage:method set to %SOUP_METHOD_OPTIONS. */ g_object_class_install_property ( - object_class, PROP_OPTIONS_PING, - g_param_spec_boolean ("options-ping", - "Options Ping", + object_class, PROP_IS_OPTIONS_PING, + g_param_spec_boolean ("is-options-ping", + "Is Options Ping", "The message is an OPTIONS ping", FALSE, G_PARAM_READWRITE | @@ -778,7 +778,7 @@ soup_message_class_init (SoupMessageClass *message_class) * * Creates a new empty #SoupMessage, which will connect to @uri * - * Returns: (nullable): the new #SoupMessage (or %NULL if @uri + * Returns: (transfer full) (nullable): the new #SoupMessage (or %NULL if @uri * could not be parsed). */ SoupMessage * @@ -810,11 +810,14 @@ soup_message_new (const char *method, const char *uri_string) * * Creates a new empty #SoupMessage, which will connect to @uri * - * Returns: the new #SoupMessage + * Returns: (transfer full): the new #SoupMessage */ SoupMessage * soup_message_new_from_uri (const char *method, GUri *uri) { + g_return_val_if_fail (method != NULL, NULL); + g_return_val_if_fail (SOUP_URI_IS_VALID (uri), NULL); + return g_object_new (SOUP_TYPE_MESSAGE, "method", method, "uri", uri, @@ -822,6 +825,27 @@ soup_message_new_from_uri (const char *method, GUri *uri) } /** + * soup_message_new_options_ping: + * @base_uri: the destination endpoint (as a #GUri) + * + * Creates a new #SoupMessage to send `OPTIONS *` to a server. The path of @base_uri + * will be ignored. + * + * Returns: (transfer full): the new #SoupMessage + */ +SoupMessage * +soup_message_new_options_ping (GUri *base_uri) +{ + g_return_val_if_fail (SOUP_URI_IS_VALID (base_uri), NULL); + + return g_object_new (SOUP_TYPE_MESSAGE, + "method", SOUP_METHOD_OPTIONS, + "uri", base_uri, + "is-options-ping", TRUE, + NULL); +} + +/** * soup_message_new_from_encoded_form: * @method: the HTTP method for the created request (GET, POST or PUT) * @uri_string: the destination endpoint (as a string) @@ -2239,10 +2263,49 @@ soup_message_set_method (SoupMessage *msg, g_object_notify (G_OBJECT (msg), "method"); } +/** + * soup_message_get_is_options_ping: + * @msg: a #SoupMessage + * + * Gets whether @msg is intended to be used to send `OPTIONS *` to a server. + * + * Returns: %TRUE if the message is options ping, or %FALSE otherwise + */ gboolean -soup_message_is_options_ping (SoupMessage *msg) +soup_message_get_is_options_ping (SoupMessage *msg) { - SoupMessagePrivate *priv = soup_message_get_instance_private (msg); + SoupMessagePrivate *priv; + + g_return_val_if_fail (SOUP_IS_MESSAGE (msg), FALSE); + + priv = soup_message_get_instance_private (msg); + + return priv->is_options_ping; +} + +/** + * soup_message_set_is_options_ping: + * @msg: a #SoupMessage + * @is_options_ping: the value to set + * + * Set whether @msg is intended to be used to send `OPTIONS *` to a server. + * When set to %TRUE, the path of #SoupMessage:uri will be ignored and + * #SoupMessage:method set to %SOUP_METHOD_OPTIONS. + */ +void +soup_message_set_is_options_ping (SoupMessage *msg, + gboolean is_options_ping) +{ + SoupMessagePrivate *priv; + + g_return_if_fail (SOUP_IS_MESSAGE (msg)); + + priv = soup_message_get_instance_private (msg); + if (priv->is_options_ping == is_options_ping) + return; - return priv->options_ping; + priv->is_options_ping = is_options_ping; + g_object_notify (G_OBJECT (msg), "is-options-ping"); + if (priv->is_options_ping) + soup_message_set_method (msg, SOUP_METHOD_OPTIONS); } diff --git a/libsoup/soup-message.h b/libsoup/soup-message.h index ff2c471e..008ea5a2 100644 --- a/libsoup/soup-message.h +++ b/libsoup/soup-message.h @@ -25,6 +25,9 @@ SoupMessage *soup_message_new_from_uri (const char *method, GUri *uri); SOUP_AVAILABLE_IN_ALL +SoupMessage *soup_message_new_options_ping (GUri *base_uri); + +SOUP_AVAILABLE_IN_ALL SoupMessage *soup_message_new_from_encoded_form (const char *method, const char *uri_string, char *encoded_form); @@ -159,4 +162,11 @@ SoupMessageHeaders *soup_message_get_request_headers (SoupMessage *msg); SOUP_AVAILABLE_IN_ALL SoupMessageHeaders *soup_message_get_response_headers (SoupMessage *msg); +SOUP_AVAILABLE_IN_ALL +gboolean soup_message_get_is_options_ping (SoupMessage *msg); + +SOUP_AVAILABLE_IN_ALL +void soup_message_set_is_options_ping (SoupMessage *msg, + gboolean is_options_ping); + G_END_DECLS diff --git a/tests/server-test.c b/tests/server-test.c index cd159151..2f9c4997 100644 --- a/tests/server-test.c +++ b/tests/server-test.c @@ -134,11 +134,8 @@ do_star_test (ServerData *sd, gconstpointer test_data) session = soup_test_session_new (NULL); debug_printf (1, " Testing with no handler\n"); - msg = g_object_new (SOUP_TYPE_MESSAGE, - "method", SOUP_METHOD_OPTIONS, - "uri", sd->base_uri, - "options-ping", TRUE, - NULL); + msg = soup_message_new_options_ping (sd->base_uri); + g_assert_true (soup_message_get_is_options_ping (msg)); soup_test_session_send_message (session, msg); soup_test_assert_message_status (msg, SOUP_STATUS_NOT_FOUND); @@ -148,11 +145,10 @@ do_star_test (ServerData *sd, gconstpointer test_data) server_add_handler (sd, "*", server_star_callback, NULL, NULL); debug_printf (1, " Testing with handler\n"); - msg = g_object_new (SOUP_TYPE_MESSAGE, - "method", SOUP_METHOD_OPTIONS, - "uri", sd->base_uri, - "options-ping", TRUE, - NULL); + msg = soup_message_new_from_uri ("GET", sd->base_uri); + g_assert_false (soup_message_get_is_options_ping (msg)); + soup_message_set_is_options_ping (msg, TRUE); + g_assert_true (soup_message_get_is_options_ping (msg)); soup_test_session_send_message (session, msg); soup_test_assert_message_status (msg, SOUP_STATUS_OK); |
