1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2000-2003, Ximian, Inc.
7 #define SOUP_MESSAGE_H 1
9 #include <libsoup/soup-types.h>
10 #include <libsoup/soup-message-body.h>
11 #include <libsoup/soup-message-headers.h>
12 #include <libsoup/soup-method.h>
16 #define SOUP_TYPE_MESSAGE (soup_message_get_type ())
17 #define SOUP_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_MESSAGE, SoupMessage))
18 #define SOUP_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_MESSAGE, SoupMessageClass))
19 #define SOUP_IS_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_MESSAGE))
20 #define SOUP_IS_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_MESSAGE))
21 #define SOUP_MESSAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_MESSAGE, SoupMessageClass))
32 SoupMessageBody *request_body;
33 SoupMessageHeaders *request_headers;
35 SoupMessageBody *response_body;
36 SoupMessageHeaders *response_headers;
40 GObjectClass parent_class;
43 void (*wrote_informational) (SoupMessage *msg);
44 void (*wrote_headers) (SoupMessage *msg);
45 void (*wrote_chunk) (SoupMessage *msg);
46 void (*wrote_body) (SoupMessage *msg);
47 void (*got_informational) (SoupMessage *msg);
48 void (*got_headers) (SoupMessage *msg);
49 void (*got_chunk) (SoupMessage *msg, SoupBuffer *chunk);
50 void (*got_body) (SoupMessage *msg);
51 void (*restarted) (SoupMessage *msg);
52 void (*finished) (SoupMessage *msg);
54 /* Padding for future expansion */
55 void (*_libsoup_reserved1) (void);
56 void (*_libsoup_reserved2) (void);
57 void (*_libsoup_reserved3) (void);
58 void (*_libsoup_reserved4) (void);
61 GType soup_message_get_type (void);
63 #define SOUP_MESSAGE_METHOD "method"
64 #define SOUP_MESSAGE_URI "uri"
65 #define SOUP_MESSAGE_HTTP_VERSION "http-version"
66 #define SOUP_MESSAGE_FLAGS "flags"
67 #define SOUP_MESSAGE_SERVER_SIDE "server-side"
68 #define SOUP_MESSAGE_STATUS_CODE "status-code"
69 #define SOUP_MESSAGE_REASON_PHRASE "reason-phrase"
70 #define SOUP_MESSAGE_FIRST_PARTY "first-party"
71 #define SOUP_MESSAGE_REQUEST_BODY "request-body"
72 #define SOUP_MESSAGE_REQUEST_HEADERS "request-headers"
73 #define SOUP_MESSAGE_RESPONSE_BODY "response-body"
74 #define SOUP_MESSAGE_RESPONSE_HEADERS "response-headers"
75 #define SOUP_MESSAGE_TLS_CERTIFICATE "tls-certificate"
76 #define SOUP_MESSAGE_TLS_ERRORS "tls-errors"
78 SoupMessage *soup_message_new (const char *method,
79 const char *uri_string);
80 SoupMessage *soup_message_new_from_uri (const char *method,
83 void soup_message_set_request (SoupMessage *msg,
84 const char *content_type,
85 SoupMemoryUse req_use,
88 void soup_message_set_response (SoupMessage *msg,
89 const char *content_type,
90 SoupMemoryUse resp_use,
91 const char *resp_body,
95 SOUP_HTTP_1_0 = 0, /*< nick=http-1-0 >*/
96 SOUP_HTTP_1_1 = 1 /*< nick=http-1-1 >*/
99 void soup_message_set_http_version (SoupMessage *msg,
100 SoupHTTPVersion version);
101 SoupHTTPVersion soup_message_get_http_version (SoupMessage *msg);
103 gboolean soup_message_is_keepalive (SoupMessage *msg);
105 SoupURI *soup_message_get_uri (SoupMessage *msg);
106 void soup_message_set_uri (SoupMessage *msg,
108 SoupAddress *soup_message_get_address (SoupMessage *msg);
110 SoupURI *soup_message_get_first_party (SoupMessage *msg);
111 void soup_message_set_first_party (SoupMessage *msg,
112 SoupURI *first_party);
115 SOUP_MESSAGE_NO_REDIRECT = (1 << 1),
116 SOUP_MESSAGE_CAN_REBUILD = (1 << 2),
117 #ifndef LIBSOUP_DISABLE_DEPRECATED
118 SOUP_MESSAGE_OVERWRITE_CHUNKS = (1 << 3),
120 SOUP_MESSAGE_CONTENT_DECODED = (1 << 4),
121 SOUP_MESSAGE_CERTIFICATE_TRUSTED = (1 << 5),
122 SOUP_MESSAGE_NEW_CONNECTION = (1 << 6)
125 void soup_message_set_flags (SoupMessage *msg,
126 SoupMessageFlags flags);
128 SoupMessageFlags soup_message_get_flags (SoupMessage *msg);
130 gboolean soup_message_get_https_status (SoupMessage *msg,
131 GTlsCertificate **certificate,
132 GTlsCertificateFlags *errors);
135 /* Specialized signal handlers */
136 guint soup_message_add_header_handler (SoupMessage *msg,
142 guint soup_message_add_status_code_handler (
152 void soup_message_set_status (SoupMessage *msg,
155 void soup_message_set_status_full (SoupMessage *msg,
157 const char *reason_phrase);
159 void soup_message_set_redirect (SoupMessage *msg,
161 const char *redirect_uri);
164 typedef SoupBuffer * (*SoupChunkAllocator) (SoupMessage *msg,
168 void soup_message_set_chunk_allocator (SoupMessage *msg,
169 SoupChunkAllocator allocator,
171 GDestroyNotify destroy_notify);
173 void soup_message_disable_feature (SoupMessage *msg,
176 void soup_message_wrote_informational (SoupMessage *msg);
177 void soup_message_wrote_headers (SoupMessage *msg);
178 void soup_message_wrote_chunk (SoupMessage *msg);
179 void soup_message_wrote_body_data (SoupMessage *msg, SoupBuffer *chunk);
180 void soup_message_wrote_body (SoupMessage *msg);
181 void soup_message_got_informational (SoupMessage *msg);
182 void soup_message_got_headers (SoupMessage *msg);
183 void soup_message_got_chunk (SoupMessage *msg, SoupBuffer *chunk);
184 void soup_message_got_body (SoupMessage *msg);
185 void soup_message_content_sniffed (SoupMessage *msg, const char *content_type, GHashTable *params);
186 void soup_message_restarted (SoupMessage *msg);
187 void soup_message_finished (SoupMessage *msg);
191 #endif /*SOUP_MESSAGE_H*/