soup-message.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
  2. /*
  3. * Copyright (C) 2000-2003, Ximian, Inc.
  4. */
  5. #ifndef SOUP_MESSAGE_H
  6. #define SOUP_MESSAGE_H 1
  7. #include <libsoup/soup-types.h>
  8. #include <libsoup/soup-message-body.h>
  9. #include <libsoup/soup-message-headers.h>
  10. #include <libsoup/soup-method.h>
  11. G_BEGIN_DECLS
  12. #define SOUP_TYPE_MESSAGE (soup_message_get_type ())
  13. #define SOUP_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_MESSAGE, SoupMessage))
  14. #define SOUP_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_MESSAGE, SoupMessageClass))
  15. #define SOUP_IS_MESSAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_MESSAGE))
  16. #define SOUP_IS_MESSAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_MESSAGE))
  17. #define SOUP_MESSAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_MESSAGE, SoupMessageClass))
  18. struct _SoupMessage {
  19. GObject parent;
  20. /*< public >*/
  21. const char *method;
  22. guint status_code;
  23. char *reason_phrase;
  24. SoupMessageBody *request_body;
  25. SoupMessageHeaders *request_headers;
  26. SoupMessageBody *response_body;
  27. SoupMessageHeaders *response_headers;
  28. };
  29. typedef struct {
  30. GObjectClass parent_class;
  31. /* signals */
  32. void (*wrote_informational) (SoupMessage *msg);
  33. void (*wrote_headers) (SoupMessage *msg);
  34. void (*wrote_chunk) (SoupMessage *msg);
  35. void (*wrote_body) (SoupMessage *msg);
  36. void (*got_informational) (SoupMessage *msg);
  37. void (*got_headers) (SoupMessage *msg);
  38. void (*got_chunk) (SoupMessage *msg, SoupBuffer *chunk);
  39. void (*got_body) (SoupMessage *msg);
  40. void (*restarted) (SoupMessage *msg);
  41. void (*finished) (SoupMessage *msg);
  42. void (*starting) (SoupMessage *msg);
  43. /* Padding for future expansion */
  44. void (*_libsoup_reserved1) (void);
  45. void (*_libsoup_reserved2) (void);
  46. void (*_libsoup_reserved3) (void);
  47. } SoupMessageClass;
  48. SOUP_AVAILABLE_IN_2_4
  49. GType soup_message_get_type (void);
  50. #define SOUP_MESSAGE_METHOD "method"
  51. #define SOUP_MESSAGE_URI "uri"
  52. #define SOUP_MESSAGE_HTTP_VERSION "http-version"
  53. #define SOUP_MESSAGE_FLAGS "flags"
  54. #define SOUP_MESSAGE_SERVER_SIDE "server-side"
  55. #define SOUP_MESSAGE_STATUS_CODE "status-code"
  56. #define SOUP_MESSAGE_REASON_PHRASE "reason-phrase"
  57. #define SOUP_MESSAGE_FIRST_PARTY "first-party"
  58. #define SOUP_MESSAGE_REQUEST_BODY "request-body"
  59. #define SOUP_MESSAGE_REQUEST_BODY_DATA "request-body-data"
  60. #define SOUP_MESSAGE_REQUEST_HEADERS "request-headers"
  61. #define SOUP_MESSAGE_RESPONSE_BODY "response-body"
  62. #define SOUP_MESSAGE_RESPONSE_BODY_DATA "response-body-data"
  63. #define SOUP_MESSAGE_RESPONSE_HEADERS "response-headers"
  64. #define SOUP_MESSAGE_TLS_CERTIFICATE "tls-certificate"
  65. #define SOUP_MESSAGE_TLS_ERRORS "tls-errors"
  66. #define SOUP_MESSAGE_PRIORITY "priority"
  67. SOUP_AVAILABLE_IN_2_4
  68. SoupMessage *soup_message_new (const char *method,
  69. const char *uri_string);
  70. SOUP_AVAILABLE_IN_2_4
  71. SoupMessage *soup_message_new_from_uri (const char *method,
  72. SoupURI *uri);
  73. SOUP_AVAILABLE_IN_2_4
  74. void soup_message_set_request (SoupMessage *msg,
  75. const char *content_type,
  76. SoupMemoryUse req_use,
  77. const char *req_body,
  78. gsize req_length);
  79. SOUP_AVAILABLE_IN_2_4
  80. void soup_message_set_response (SoupMessage *msg,
  81. const char *content_type,
  82. SoupMemoryUse resp_use,
  83. const char *resp_body,
  84. gsize resp_length);
  85. typedef enum {
  86. SOUP_HTTP_1_0 = 0, /*< nick=http-1-0 >*/
  87. SOUP_HTTP_1_1 = 1 /*< nick=http-1-1 >*/
  88. } SoupHTTPVersion;
  89. SOUP_AVAILABLE_IN_2_4
  90. void soup_message_set_http_version (SoupMessage *msg,
  91. SoupHTTPVersion version);
  92. SOUP_AVAILABLE_IN_2_4
  93. SoupHTTPVersion soup_message_get_http_version (SoupMessage *msg);
  94. SOUP_AVAILABLE_IN_2_4
  95. gboolean soup_message_is_keepalive (SoupMessage *msg);
  96. SOUP_AVAILABLE_IN_2_4
  97. SoupURI *soup_message_get_uri (SoupMessage *msg);
  98. SOUP_AVAILABLE_IN_2_4
  99. void soup_message_set_uri (SoupMessage *msg,
  100. SoupURI *uri);
  101. SOUP_AVAILABLE_IN_2_26
  102. SoupAddress *soup_message_get_address (SoupMessage *msg);
  103. SOUP_AVAILABLE_IN_2_30
  104. SoupURI *soup_message_get_first_party (SoupMessage *msg);
  105. SOUP_AVAILABLE_IN_2_30
  106. void soup_message_set_first_party (SoupMessage *msg,
  107. SoupURI *first_party);
  108. typedef enum {
  109. SOUP_MESSAGE_NO_REDIRECT = (1 << 1),
  110. SOUP_MESSAGE_CAN_REBUILD = (1 << 2),
  111. #ifndef SOUP_DISABLE_DEPRECATED
  112. SOUP_MESSAGE_OVERWRITE_CHUNKS = (1 << 3),
  113. #endif
  114. SOUP_MESSAGE_CONTENT_DECODED = (1 << 4),
  115. SOUP_MESSAGE_CERTIFICATE_TRUSTED = (1 << 5),
  116. SOUP_MESSAGE_NEW_CONNECTION = (1 << 6),
  117. SOUP_MESSAGE_IDEMPOTENT = (1 << 7),
  118. SOUP_MESSAGE_IGNORE_CONNECTION_LIMITS = (1 << 8)
  119. } SoupMessageFlags;
  120. SOUP_AVAILABLE_IN_2_4
  121. void soup_message_set_flags (SoupMessage *msg,
  122. SoupMessageFlags flags);
  123. SOUP_AVAILABLE_IN_2_4
  124. SoupMessageFlags soup_message_get_flags (SoupMessage *msg);
  125. SOUP_AVAILABLE_IN_2_34
  126. gboolean soup_message_get_https_status (SoupMessage *msg,
  127. GTlsCertificate **certificate,
  128. GTlsCertificateFlags *errors);
  129. /* Specialized signal handlers */
  130. SOUP_AVAILABLE_IN_2_4
  131. guint soup_message_add_header_handler (SoupMessage *msg,
  132. const char *signal,
  133. const char *header,
  134. GCallback callback,
  135. gpointer user_data);
  136. SOUP_AVAILABLE_IN_2_4
  137. guint soup_message_add_status_code_handler (
  138. SoupMessage *msg,
  139. const char *signal,
  140. guint status_code,
  141. GCallback callback,
  142. gpointer user_data);
  143. /*
  144. * Status Setting
  145. */
  146. SOUP_AVAILABLE_IN_2_4
  147. void soup_message_set_status (SoupMessage *msg,
  148. guint status_code);
  149. SOUP_AVAILABLE_IN_2_4
  150. void soup_message_set_status_full (SoupMessage *msg,
  151. guint status_code,
  152. const char *reason_phrase);
  153. SOUP_AVAILABLE_IN_2_38
  154. void soup_message_set_redirect (SoupMessage *msg,
  155. guint status_code,
  156. const char *redirect_uri);
  157. /* I/O */
  158. #ifndef SOUP_DISABLE_DEPRECATED
  159. typedef SoupBuffer * (*SoupChunkAllocator) (SoupMessage *msg,
  160. gsize max_len,
  161. gpointer user_data);
  162. SOUP_AVAILABLE_IN_2_4
  163. SOUP_DEPRECATED_IN_2_42_FOR(SoupRequest)
  164. void soup_message_set_chunk_allocator (SoupMessage *msg,
  165. SoupChunkAllocator allocator,
  166. gpointer user_data,
  167. GDestroyNotify destroy_notify);
  168. #endif
  169. SOUP_AVAILABLE_IN_2_28
  170. void soup_message_disable_feature (SoupMessage *msg,
  171. GType feature_type);
  172. SOUP_AVAILABLE_IN_2_42
  173. SoupRequest *soup_message_get_soup_request (SoupMessage *msg);
  174. typedef enum {
  175. SOUP_MESSAGE_PRIORITY_VERY_LOW = 0,
  176. SOUP_MESSAGE_PRIORITY_LOW,
  177. SOUP_MESSAGE_PRIORITY_NORMAL,
  178. SOUP_MESSAGE_PRIORITY_HIGH,
  179. SOUP_MESSAGE_PRIORITY_VERY_HIGH
  180. } SoupMessagePriority;
  181. SOUP_AVAILABLE_IN_2_44
  182. void soup_message_set_priority (SoupMessage *msg,
  183. SoupMessagePriority priority);
  184. SOUP_AVAILABLE_IN_2_44
  185. SoupMessagePriority soup_message_get_priority (SoupMessage *msg);
  186. SOUP_AVAILABLE_IN_2_4
  187. void soup_message_wrote_informational (SoupMessage *msg);
  188. SOUP_AVAILABLE_IN_2_4
  189. void soup_message_wrote_headers (SoupMessage *msg);
  190. SOUP_AVAILABLE_IN_2_4
  191. void soup_message_wrote_chunk (SoupMessage *msg);
  192. SOUP_AVAILABLE_IN_2_4
  193. void soup_message_wrote_body_data (SoupMessage *msg, SoupBuffer *chunk);
  194. SOUP_AVAILABLE_IN_2_4
  195. void soup_message_wrote_body (SoupMessage *msg);
  196. SOUP_AVAILABLE_IN_2_4
  197. void soup_message_got_informational (SoupMessage *msg);
  198. SOUP_AVAILABLE_IN_2_4
  199. void soup_message_got_headers (SoupMessage *msg);
  200. SOUP_AVAILABLE_IN_2_4
  201. void soup_message_got_chunk (SoupMessage *msg, SoupBuffer *chunk);
  202. SOUP_AVAILABLE_IN_2_4
  203. void soup_message_got_body (SoupMessage *msg);
  204. SOUP_AVAILABLE_IN_2_4
  205. void soup_message_content_sniffed (SoupMessage *msg, const char *content_type, GHashTable *params);
  206. SOUP_AVAILABLE_IN_2_50
  207. void soup_message_starting (SoupMessage *msg);
  208. SOUP_AVAILABLE_IN_2_4
  209. void soup_message_restarted (SoupMessage *msg);
  210. SOUP_AVAILABLE_IN_2_4
  211. void soup_message_finished (SoupMessage *msg);
  212. G_END_DECLS
  213. #endif /*SOUP_MESSAGE_H*/