1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ 2 /* 3 * Copyright (C) 2000-2003, Ximian, Inc. 4 */ 5 6 #pragma once 7 8 #include "soup-types.h" 9 #include "soup-message-body.h" 10 #include "soup-message-headers.h" 11 #include "soup-method.h" 12 #include "soup-multipart.h" 13 14 G_BEGIN_DECLS 15 16 #define SOUP_TYPE_MESSAGE (soup_message_get_type ()) 17 SOUP_AVAILABLE_IN_ALL 18 G_DECLARE_FINAL_TYPE (SoupMessage, soup_message, SOUP, MESSAGE, GObject) 19 20 SOUP_AVAILABLE_IN_ALL 21 SoupMessage *soup_message_new (const char *method, 22 const char *uri_string); 23 SOUP_AVAILABLE_IN_ALL 24 SoupMessage *soup_message_new_from_uri (const char *method, 25 GUri *uri); 26 27 SOUP_AVAILABLE_IN_ALL 28 SoupMessage *soup_message_new_options_ping (GUri *base_uri); 29 30 SOUP_AVAILABLE_IN_ALL 31 SoupMessage *soup_message_new_from_encoded_form (const char *method, 32 const char *uri_string, 33 char *encoded_form); 34 35 SOUP_AVAILABLE_IN_ALL 36 SoupMessage *soup_message_new_from_multipart (const char *uri_string, 37 SoupMultipart *multipart); 38 39 SOUP_AVAILABLE_IN_ALL 40 void soup_message_set_request_body (SoupMessage *msg, 41 const char *content_type, 42 GInputStream *stream, 43 gssize content_length); 44 SOUP_AVAILABLE_IN_ALL 45 void soup_message_set_request_body_from_bytes (SoupMessage *msg, 46 const char *content_type, 47 GBytes *bytes); 48 49 SOUP_AVAILABLE_IN_ALL 50 SoupHTTPVersion soup_message_get_http_version (SoupMessage *msg); 51 52 SOUP_AVAILABLE_IN_ALL 53 gboolean soup_message_is_keepalive (SoupMessage *msg); 54 55 SOUP_AVAILABLE_IN_ALL 56 GUri *soup_message_get_uri (SoupMessage *msg); 57 SOUP_AVAILABLE_IN_ALL 58 void soup_message_set_uri (SoupMessage *msg, 59 GUri *uri); 60 SOUP_AVAILABLE_IN_ALL 61 GUri *soup_message_get_first_party (SoupMessage *msg); 62 SOUP_AVAILABLE_IN_ALL 63 void soup_message_set_first_party (SoupMessage *msg, 64 GUri *first_party); 65 SOUP_AVAILABLE_IN_ALL 66 GUri *soup_message_get_site_for_cookies (SoupMessage *msg); 67 SOUP_AVAILABLE_IN_ALL 68 void soup_message_set_site_for_cookies (SoupMessage *msg, 69 GUri *site_for_cookies); 70 SOUP_AVAILABLE_IN_ALL 71 void soup_message_set_is_top_level_navigation (SoupMessage *msg, 72 gboolean is_top_level_navigation); 73 SOUP_AVAILABLE_IN_ALL 74 gboolean soup_message_get_is_top_level_navigation (SoupMessage *msg); 75 76 typedef enum { 77 SOUP_MESSAGE_NO_REDIRECT = (1 << 1), 78 SOUP_MESSAGE_NEW_CONNECTION = (1 << 2), 79 SOUP_MESSAGE_IDEMPOTENT = (1 << 3), 80 SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE = (1 << 4), 81 SOUP_MESSAGE_COLLECT_METRICS = (1 << 5) 82 } SoupMessageFlags; 83 84 SOUP_AVAILABLE_IN_ALL 85 void soup_message_set_flags (SoupMessage *msg, 86 SoupMessageFlags flags); 87 88 SOUP_AVAILABLE_IN_ALL 89 SoupMessageFlags soup_message_get_flags (SoupMessage *msg); 90 91 SOUP_AVAILABLE_IN_ALL 92 void soup_message_add_flags (SoupMessage *msg, 93 SoupMessageFlags flags); 94 95 SOUP_AVAILABLE_IN_ALL 96 void soup_message_remove_flags (SoupMessage *msg, 97 SoupMessageFlags flags); 98 99 SOUP_AVAILABLE_IN_ALL 100 gboolean soup_message_query_flags (SoupMessage *msg, 101 SoupMessageFlags flags); 102 103 SOUP_AVAILABLE_IN_ALL 104 GTlsCertificate *soup_message_get_tls_peer_certificate (SoupMessage *msg); 105 106 SOUP_AVAILABLE_IN_ALL 107 GTlsCertificateFlags soup_message_get_tls_peer_certificate_errors (SoupMessage *msg); 108 109 SOUP_AVAILABLE_IN_ALL 110 GTlsProtocolVersion soup_message_get_tls_protocol_version (SoupMessage *msg); 111 112 SOUP_AVAILABLE_IN_ALL 113 const char *soup_message_get_tls_ciphersuite_name (SoupMessage *msg); 114 115 SOUP_AVAILABLE_IN_ALL 116 void soup_message_set_tls_client_certificate (SoupMessage *msg, 117 GTlsCertificate *certificate); 118 119 SOUP_AVAILABLE_IN_ALL 120 void soup_message_tls_client_certificate_password_request_complete (SoupMessage *msg); 121 122 123 /* Specialized signal handlers */ 124 SOUP_AVAILABLE_IN_ALL 125 guint soup_message_add_header_handler (SoupMessage *msg, 126 const char *signal, 127 const char *header, 128 GCallback callback, 129 gpointer user_data); 130 131 SOUP_AVAILABLE_IN_ALL 132 guint soup_message_add_status_code_handler ( 133 SoupMessage *msg, 134 const char *signal, 135 guint status_code, 136 GCallback callback, 137 gpointer user_data); 138 139 SOUP_AVAILABLE_IN_ALL 140 void soup_message_disable_feature (SoupMessage *msg, 141 GType feature_type); 142 143 SOUP_AVAILABLE_IN_ALL 144 gboolean soup_message_is_feature_disabled (SoupMessage *msg, 145 GType feature_type); 146 147 148 typedef enum { 149 SOUP_MESSAGE_PRIORITY_VERY_LOW = 0, 150 SOUP_MESSAGE_PRIORITY_LOW, 151 SOUP_MESSAGE_PRIORITY_NORMAL, 152 SOUP_MESSAGE_PRIORITY_HIGH, 153 SOUP_MESSAGE_PRIORITY_VERY_HIGH 154 } SoupMessagePriority; 155 156 SOUP_AVAILABLE_IN_ALL 157 void soup_message_set_priority (SoupMessage *msg, 158 SoupMessagePriority priority); 159 160 161 SOUP_AVAILABLE_IN_ALL 162 SoupMessagePriority soup_message_get_priority (SoupMessage *msg); 163 164 SOUP_AVAILABLE_IN_ALL 165 const char *soup_message_get_method (SoupMessage *msg); 166 167 SOUP_AVAILABLE_IN_ALL 168 void soup_message_set_method (SoupMessage *msg, 169 const char *method); 170 171 SOUP_AVAILABLE_IN_ALL 172 SoupStatus soup_message_get_status (SoupMessage *msg); 173 174 SOUP_AVAILABLE_IN_ALL 175 const char *soup_message_get_reason_phrase (SoupMessage *msg); 176 177 SOUP_AVAILABLE_IN_ALL 178 SoupMessageHeaders *soup_message_get_request_headers (SoupMessage *msg); 179 180 SOUP_AVAILABLE_IN_ALL 181 SoupMessageHeaders *soup_message_get_response_headers (SoupMessage *msg); 182 183 SOUP_AVAILABLE_IN_ALL 184 gboolean soup_message_get_is_options_ping (SoupMessage *msg); 185 186 SOUP_AVAILABLE_IN_ALL 187 void soup_message_set_is_options_ping (SoupMessage *msg, 188 gboolean is_options_ping); 189 SOUP_AVAILABLE_IN_ALL 190 guint64 soup_message_get_connection_id (SoupMessage *msg); 191 192 SOUP_AVAILABLE_IN_ALL 193 GSocketAddress *soup_message_get_remote_address (SoupMessage *msg); 194 195 SOUP_AVAILABLE_IN_ALL 196 SoupMessageMetrics *soup_message_get_metrics (SoupMessage *msg); 197 198 199 G_END_DECLS 200