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