Remove extern "C" wrapping other includes
[platform/upstream/libsoup.git] / libsoup / soup-session.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2000-2003, Ximian, Inc.
4  */
5
6 #ifndef __SOUP_SESSION_H__
7 #define __SOUP_SESSION_H__ 1
8
9 #include <libsoup/soup-types.h>
10 #include <libsoup/soup-address.h>
11 #include <libsoup/soup-message.h>
12 #include <libsoup/soup-websocket-connection.h>
13
14 G_BEGIN_DECLS
15
16 #define SOUP_TYPE_SESSION            (soup_session_get_type ())
17 #define SOUP_SESSION(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SESSION, SoupSession))
18 #define SOUP_SESSION_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SESSION, SoupSessionClass))
19 #define SOUP_IS_SESSION(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SESSION))
20 #define SOUP_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SESSION))
21 #define SOUP_SESSION_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SESSION, SoupSessionClass))
22
23 typedef void (*SoupSessionCallback) (SoupSession           *session,
24                                      SoupMessage           *msg,
25                                      gpointer               user_data);
26
27 struct _SoupSession {
28         GObject parent;
29
30 };
31
32 typedef struct {
33         GObjectClass parent_class;
34
35         /* signals */
36         void (*request_started) (SoupSession *session, SoupMessage *msg,
37                                  SoupSocket *socket);
38         void (*authenticate)    (SoupSession *session, SoupMessage *msg,
39                                  SoupAuth *auth, gboolean retrying);
40
41         /* methods */
42         void  (*queue_message)   (SoupSession *session, SoupMessage *msg,
43                                   SoupSessionCallback callback,
44                                   gpointer user_data);
45         void  (*requeue_message) (SoupSession *session, SoupMessage *msg);
46         guint (*send_message)    (SoupSession *session, SoupMessage *msg);
47
48         void  (*cancel_message)  (SoupSession *session, SoupMessage *msg,
49                                   guint status_code);
50
51         void  (*auth_required)   (SoupSession *session, SoupMessage *msg,
52                                   SoupAuth *auth, gboolean retrying);
53
54         void  (*flush_queue)     (SoupSession *session);
55
56         void  (*kick)            (SoupSession *session);
57
58         /* Padding for future expansion */
59         void (*_libsoup_reserved4) (void);
60 } SoupSessionClass;
61
62 SOUP_AVAILABLE_IN_2_42
63 GType soup_session_get_type (void);
64
65 #define SOUP_SESSION_LOCAL_ADDRESS          "local-address"
66 #define SOUP_SESSION_PROXY_URI              "proxy-uri"
67 #define SOUP_SESSION_PROXY_RESOLVER         "proxy-resolver"
68 #define SOUP_SESSION_MAX_CONNS              "max-conns"
69 #define SOUP_SESSION_MAX_CONNS_PER_HOST     "max-conns-per-host"
70 #define SOUP_SESSION_USE_NTLM               "use-ntlm"
71 #define SOUP_SESSION_SSL_CA_FILE            "ssl-ca-file"
72 #define SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE "ssl-use-system-ca-file"
73 #define SOUP_SESSION_TLS_DATABASE           "tls-database"
74 #define SOUP_SESSION_SSL_STRICT             "ssl-strict"
75 #define SOUP_SESSION_TLS_INTERACTION        "tls-interaction"
76 #define SOUP_SESSION_ASYNC_CONTEXT          "async-context"
77 #define SOUP_SESSION_USE_THREAD_CONTEXT     "use-thread-context"
78 #define SOUP_SESSION_TIMEOUT                "timeout"
79 #define SOUP_SESSION_USER_AGENT             "user-agent"
80 #define SOUP_SESSION_ACCEPT_LANGUAGE        "accept-language"
81 #define SOUP_SESSION_ACCEPT_LANGUAGE_AUTO   "accept-language-auto"
82 #define SOUP_SESSION_IDLE_TIMEOUT           "idle-timeout"
83 #define SOUP_SESSION_ADD_FEATURE            "add-feature"
84 #define SOUP_SESSION_ADD_FEATURE_BY_TYPE    "add-feature-by-type"
85 #define SOUP_SESSION_REMOVE_FEATURE_BY_TYPE "remove-feature-by-type"
86 #define SOUP_SESSION_HTTP_ALIASES       "http-aliases"
87 #define SOUP_SESSION_HTTPS_ALIASES      "https-aliases"
88
89 SOUP_AVAILABLE_IN_2_42
90 SoupSession    *soup_session_new              (void);
91
92 SOUP_AVAILABLE_IN_2_42
93 SoupSession    *soup_session_new_with_options (const char *optname1,
94                                                ...) G_GNUC_NULL_TERMINATED;
95
96 SOUP_AVAILABLE_IN_2_4
97 void            soup_session_queue_message    (SoupSession           *session,
98                                                SoupMessage           *msg,
99                                                SoupSessionCallback    callback,
100                                                gpointer               user_data);
101 SOUP_AVAILABLE_IN_2_4
102 void            soup_session_requeue_message  (SoupSession           *session,
103                                                SoupMessage           *msg);
104
105 SOUP_AVAILABLE_IN_2_4
106 guint           soup_session_send_message     (SoupSession           *session,
107                                                SoupMessage           *msg);
108
109 SOUP_AVAILABLE_IN_2_4
110 void            soup_session_pause_message    (SoupSession           *session,
111                                                SoupMessage           *msg);
112 SOUP_AVAILABLE_IN_2_4
113 void            soup_session_unpause_message  (SoupSession           *session,
114                                                SoupMessage           *msg);
115
116 SOUP_AVAILABLE_IN_2_4
117 void            soup_session_cancel_message   (SoupSession           *session,
118                                                SoupMessage           *msg,
119                                                guint                  status_code);
120 SOUP_AVAILABLE_IN_2_4
121 void            soup_session_abort            (SoupSession           *session);
122
123 SOUP_AVAILABLE_IN_2_4
124 GMainContext   *soup_session_get_async_context(SoupSession           *session);
125
126 SOUP_AVAILABLE_IN_2_42
127 void            soup_session_send_async       (SoupSession           *session,
128                                                SoupMessage           *msg,
129                                                GCancellable          *cancellable,
130                                                GAsyncReadyCallback    callback,
131                                                gpointer               user_data);
132 SOUP_AVAILABLE_IN_2_42
133 GInputStream   *soup_session_send_finish      (SoupSession           *session,
134                                                GAsyncResult          *result,
135                                                GError               **error);
136 SOUP_AVAILABLE_IN_2_42
137 GInputStream   *soup_session_send             (SoupSession           *session,
138                                                SoupMessage           *msg,
139                                                GCancellable          *cancellable,
140                                                GError               **error);
141
142 #ifndef SOUP_DISABLE_DEPRECATED
143 SOUP_AVAILABLE_IN_2_30
144 SOUP_DEPRECATED_IN_2_38_FOR (soup_session_prefetch_dns)
145 void            soup_session_prepare_for_uri  (SoupSession           *session,
146                                                SoupURI               *uri);
147 #endif
148
149 SOUP_AVAILABLE_IN_2_38
150 void            soup_session_prefetch_dns     (SoupSession           *session,
151                                                const char            *hostname,
152                                                GCancellable          *cancellable,
153                                                SoupAddressCallback    callback,
154                                                gpointer               user_data);
155
156 SOUP_AVAILABLE_IN_2_38
157 gboolean        soup_session_would_redirect   (SoupSession           *session,
158                                                SoupMessage           *msg);
159 SOUP_AVAILABLE_IN_2_38
160 gboolean        soup_session_redirect_message (SoupSession           *session,
161                                                SoupMessage           *msg);
162
163 SOUP_AVAILABLE_IN_2_24
164 void                soup_session_add_feature            (SoupSession        *session,
165                                                          SoupSessionFeature *feature);
166 SOUP_AVAILABLE_IN_2_24
167 void                soup_session_add_feature_by_type    (SoupSession        *session,
168                                                          GType               feature_type);
169 SOUP_AVAILABLE_IN_2_24
170 void                soup_session_remove_feature         (SoupSession        *session,
171                                                          SoupSessionFeature *feature);
172 SOUP_AVAILABLE_IN_2_24
173 void                soup_session_remove_feature_by_type (SoupSession        *session,
174                                                          GType               feature_type);
175 SOUP_AVAILABLE_IN_2_42
176 gboolean            soup_session_has_feature            (SoupSession        *session,
177                                                          GType               feature_type);
178 SOUP_AVAILABLE_IN_2_26
179 GSList             *soup_session_get_features           (SoupSession        *session,
180                                                          GType               feature_type);
181 SOUP_AVAILABLE_IN_2_26
182 SoupSessionFeature *soup_session_get_feature            (SoupSession        *session,
183                                                          GType               feature_type);
184 SOUP_AVAILABLE_IN_2_28
185 SoupSessionFeature *soup_session_get_feature_for_message(SoupSession        *session,
186                                                          GType               feature_type,
187                                                          SoupMessage        *msg);
188
189 SOUP_AVAILABLE_IN_2_42
190 SoupRequest     *soup_session_request          (SoupSession  *session,
191                                                 const char   *uri_string,
192                                                 GError      **error);
193 SOUP_AVAILABLE_IN_2_42
194 SoupRequest     *soup_session_request_uri      (SoupSession  *session,
195                                                 SoupURI      *uri,
196                                                 GError      **error);
197 SOUP_AVAILABLE_IN_2_42
198 SoupRequestHTTP *soup_session_request_http     (SoupSession  *session,
199                                                 const char   *method,
200                                                 const char   *uri_string,
201                                                 GError      **error);
202 SOUP_AVAILABLE_IN_2_42
203 SoupRequestHTTP *soup_session_request_http_uri (SoupSession  *session,
204                                                 const char   *method,
205                                                 SoupURI      *uri,
206                                                 GError      **error);
207
208 SOUP_AVAILABLE_IN_2_42
209 GQuark soup_request_error_quark (void);
210 #define SOUP_REQUEST_ERROR soup_request_error_quark ()
211
212 typedef enum {
213         SOUP_REQUEST_ERROR_BAD_URI,
214         SOUP_REQUEST_ERROR_UNSUPPORTED_URI_SCHEME,
215         SOUP_REQUEST_ERROR_PARSING,
216         SOUP_REQUEST_ERROR_ENCODING
217 } SoupRequestError;
218
219 SOUP_AVAILABLE_IN_2_50
220 GIOStream *soup_session_steal_connection (SoupSession *session,
221                                           SoupMessage *msg);
222
223 SOUP_AVAILABLE_IN_2_50
224 void                     soup_session_websocket_connect_async  (SoupSession          *session,
225                                                                 SoupMessage          *msg,
226                                                                 const char           *origin,
227                                                                 char                **protocols,
228                                                                 GCancellable         *cancellable,
229                                                                 GAsyncReadyCallback   callback,
230                                                                 gpointer              user_data);
231
232 SOUP_AVAILABLE_IN_2_50
233 SoupWebsocketConnection *soup_session_websocket_connect_finish (SoupSession          *session,
234                                                                 GAsyncResult         *result,
235                                                                 GError              **error);
236
237 typedef void (*SoupSessionConnectProgressCallback) (SoupSession        *session,
238                                                     GSocketClientEvent  event,
239                                                     GIOStream          *connection,
240                                                     gpointer            user_data);
241
242 SOUP_AVAILABLE_IN_2_62
243 void       soup_session_connect_async  (SoupSession                       *session,
244                                         SoupURI                           *uri,
245                                         GCancellable                      *cancellable,
246                                         SoupSessionConnectProgressCallback progress_callback,
247                                         GAsyncReadyCallback                callback,
248                                         gpointer                           user_data);
249
250 SOUP_AVAILABLE_IN_2_62
251 GIOStream *soup_session_connect_finish (SoupSession                       *session,
252                                         GAsyncResult                      *result,
253                                         GError                           **error);
254
255 G_END_DECLS
256
257 #endif /* __SOUP_SESSION_H__ */