3 * Purple is the legal property of its developers, whose names are too numerous
4 * to list here. Please refer to the COPYRIGHT file distributed with this
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
22 #ifndef _PURPLE_HTTP_H_
23 #define _PURPLE_HTTP_H_
26 * @section_id: libpurple-http
27 * @short_description: <filename>http.h</filename>
33 #include "connection.h"
38 * A structure containing all data required to generate a single HTTP request.
40 typedef struct _PurpleHttpRequest PurpleHttpRequest
;
43 * PurpleHttpConnection:
45 * A representation of actually running HTTP request. Can be used to cancel the
48 typedef struct _PurpleHttpConnection PurpleHttpConnection
;
53 * All information got with response for HTTP request.
55 typedef struct _PurpleHttpResponse PurpleHttpResponse
;
60 * Parsed representation for the URL.
62 typedef struct _PurpleHttpURL PurpleHttpURL
;
65 * PurpleHttpCookieJar:
67 * An collection of cookies, got from HTTP response or provided for HTTP
70 typedef struct _PurpleHttpCookieJar PurpleHttpCookieJar
;
73 * PurpleHttpKeepalivePool:
75 * A pool of TCP connections for HTTP Keep-Alive session.
77 typedef struct _PurpleHttpKeepalivePool PurpleHttpKeepalivePool
;
80 * PurpleHttpConnectionSet:
82 * A set of running HTTP requests. Can be used to cancel all of them at once.
84 typedef struct _PurpleHttpConnectionSet PurpleHttpConnectionSet
;
89 * An callback called after performing (successfully or not) HTTP request.
91 typedef void (*PurpleHttpCallback
)(PurpleHttpConnection
*http_conn
,
92 PurpleHttpResponse
*response
, gpointer user_data
);
95 * PurpleHttpContentReaderCb:
97 * An callback called after storing data requested by PurpleHttpContentReader.
99 typedef void (*PurpleHttpContentReaderCb
)(PurpleHttpConnection
*http_conn
,
100 gboolean success
, gboolean eof
, size_t stored
);
103 * PurpleHttpContentReader:
104 * @http_conn: Connection, which requests data.
105 * @buffer: Buffer to store data to (with offset ignored).
106 * @offset: Position, from where to read data.
107 * @length: Length of data to read.
108 * @user_data: The user data passed with callback function.
109 * @cb: The function to call after storing data to buffer.
111 * An callback for getting large request contents (ie. from file stored on
114 typedef void (*PurpleHttpContentReader
)(PurpleHttpConnection
*http_conn
,
115 gchar
*buffer
, size_t offset
, size_t length
, gpointer user_data
,
116 PurpleHttpContentReaderCb cb
);
119 * PurpleHttpContentWriter:
120 * @http_conn: Connection, which requests data.
121 * @response: Response at point got so far (may change later).
122 * @buffer: Buffer to read data from (with offset ignored).
123 * @offset: Position of data got (its value is offset + length of
124 * previous call), can be safely ignored.
125 * @length: Length of data read.
126 * @user_data: The user data passed with callback function.
128 * An callback for writting large response contents.
130 * Returns: TRUE, if succeeded, FALSE otherwise.
132 typedef gboolean (*PurpleHttpContentWriter
)(PurpleHttpConnection
*http_conn
,
133 PurpleHttpResponse
*response
, const gchar
*buffer
, size_t offset
,
134 size_t length
, gpointer user_data
);
137 * PurpleHttpProgressWatcher:
138 * @http_conn: The HTTP Connection.
139 * @reading_state: FALSE, is we are sending the request, TRUE, when reading
141 * @processed: The amount of data already processed.
142 * @total: Total amount of data (in current state).
143 * @user_data: The user data passed with callback function.
145 * An callback for watching HTTP connection progress.
147 typedef void (*PurpleHttpProgressWatcher
)(PurpleHttpConnection
*http_conn
,
148 gboolean reading_state
, int processed
, int total
, gpointer user_data
);
152 /**************************************************************************/
153 /* Performing HTTP requests */
154 /**************************************************************************/
158 * @gc: The connection for which the request is needed, or NULL.
159 * @callback: (scope call): The callback function.
160 * @user_data: The user data to pass to the callback function.
163 * Fetches the data from a URL with GET request, and passes it to a callback
166 * Returns: The HTTP connection struct.
168 PurpleHttpConnection
* purple_http_get(PurpleConnection
*gc
,
169 PurpleHttpCallback callback
, gpointer user_data
, const gchar
*url
);
172 * purple_http_get_printf:
173 * @gc: The connection for which the request is needed, or NULL.
174 * @callback: (scope call): The callback function.
175 * @user_data: The user data to pass to the callback function.
176 * @format: The format string.
178 * Constructs an URL and fetches the data from it with GET request, then passes
179 * it to a callback function.
181 * Returns: The HTTP connection struct.
183 PurpleHttpConnection
* purple_http_get_printf(PurpleConnection
*gc
,
184 PurpleHttpCallback callback
, gpointer user_data
,
185 const gchar
*format
, ...) G_GNUC_PRINTF(4, 5);
188 * purple_http_request:
189 * @gc: The connection for which the request is needed, or NULL.
190 * @request: The request.
191 * @callback: (scope call): The callback function.
192 * @user_data: The user data to pass to the callback function.
194 * Fetches a HTTP request and passes the response to a callback function.
195 * Provided request struct can be shared by multiple http requests but can not
196 * be modified when any of these is running.
198 * Returns: The HTTP connection struct.
200 PurpleHttpConnection
* purple_http_request(PurpleConnection
*gc
,
201 PurpleHttpRequest
*request
, PurpleHttpCallback callback
,
204 /**************************************************************************/
205 /* HTTP connection API */
206 /**************************************************************************/
209 * purple_http_conn_cancel:
210 * @http_conn: The data returned when you initiated the HTTP request.
212 * Cancel a pending HTTP request.
214 void purple_http_conn_cancel(PurpleHttpConnection
*http_conn
);
217 * purple_http_conn_cancel_all:
220 * Cancels all HTTP connections associated with the specified handle.
222 void purple_http_conn_cancel_all(PurpleConnection
*gc
);
225 * purple_http_conn_is_running:
226 * @http_conn: The HTTP connection (may be invalid pointer).
228 * Checks, if provided HTTP request is running.
230 * Returns: TRUE, if provided connection is currently running.
232 gboolean
purple_http_conn_is_running(PurpleHttpConnection
*http_conn
);
235 * purple_http_conn_get_request:
236 * @http_conn: The HTTP connection.
238 * Gets PurpleHttpRequest used for specified HTTP connection.
240 * Returns: The PurpleHttpRequest object.
242 PurpleHttpRequest
* purple_http_conn_get_request(
243 PurpleHttpConnection
*http_conn
);
246 * purple_http_conn_get_cookie_jar:
247 * @http_conn: The HTTP connection.
249 * Gets cookie jar used within connection.
251 * Returns: The cookie jar.
253 PurpleHttpCookieJar
* purple_http_conn_get_cookie_jar(
254 PurpleHttpConnection
*http_conn
);
257 * purple_http_conn_get_purple_connection:
258 * @http_conn: The HTTP connection.
260 * Gets PurpleConnection tied with specified HTTP connection.
262 * Returns: The PurpleConnection object.
264 PurpleConnection
* purple_http_conn_get_purple_connection(
265 PurpleHttpConnection
*http_conn
);
268 * purple_http_conn_set_progress_watcher:
269 * @http_conn: The HTTP connection.
270 * @watcher: (scope call): The watcher.
271 * @user_data: The user data to pass to the callback function.
272 * @interval_threshold: Minimum interval (in microseconds) of calls to
273 * watcher, or -1 for default.
275 * Sets the watcher, called after writing or reading data to/from HTTP stream.
276 * May be used for updating transfer progress gauge.
278 void purple_http_conn_set_progress_watcher(PurpleHttpConnection
*http_conn
,
279 PurpleHttpProgressWatcher watcher
, gpointer user_data
,
280 gint interval_threshold
);
283 /**************************************************************************/
284 /* URL processing API */
285 /**************************************************************************/
288 * purple_http_url_parse:
289 * @url: The URL to parse.
293 * The returned data must be freed with purple_http_url_free.
295 * Returns: The parsed url or NULL, if the URL is invalid.
298 purple_http_url_parse(const char *url
);
301 * purple_http_url_free:
302 * @parsed_url: The parsed URL struct, or NULL.
304 * Frees the parsed URL struct.
307 purple_http_url_free(PurpleHttpURL
*parsed_url
);
310 * purple_http_url_relative:
311 * @base_url: The base URL. The result is stored here.
312 * @relative_url: The relative URL.
314 * Converts the base URL to the absolute form of the provided relative URL.
316 * Example: "https://example.com/path/to/file.html" + "subdir/other-file.html" =
317 * "https://example.com/path/to/subdir/another-file.html"
320 purple_http_url_relative(PurpleHttpURL
*base_url
, PurpleHttpURL
*relative_url
);
323 * purple_http_url_print:
324 * @parsed_url: The URL struct.
326 * Converts the URL struct to the printable form. The result may not be a valid
327 * URL (in cases, when the struct doesn't have all fields filled properly).
329 * The result must be g_free'd.
331 * Returns: The printable form of the URL.
334 purple_http_url_print(PurpleHttpURL
*parsed_url
);
337 * purple_http_url_get_protocol:
338 * @parsed_url: The URL struct.
340 * Gets the protocol part of URL.
342 * Returns: The protocol.
345 purple_http_url_get_protocol(const PurpleHttpURL
*parsed_url
);
348 * purple_http_url_get_username:
349 * @parsed_url: The URL struct.
351 * Gets the username part of URL.
353 * Returns: The username.
356 purple_http_url_get_username(const PurpleHttpURL
*parsed_url
);
359 * purple_http_url_get_password:
360 * @parsed_url: The URL struct.
362 * Gets the password part of URL.
364 * Returns: The password.
367 purple_http_url_get_password(const PurpleHttpURL
*parsed_url
);
370 * purple_http_url_get_host:
371 * @parsed_url: The URL struct.
373 * Gets the hostname part of URL.
375 * Returns: The hostname.
378 purple_http_url_get_host(const PurpleHttpURL
*parsed_url
);
381 * purple_http_url_get_port:
382 * @parsed_url: The URL struct.
384 * Gets the port part of URL.
386 * Returns: The port number.
389 purple_http_url_get_port(const PurpleHttpURL
*parsed_url
);
392 * purple_http_url_get_path:
393 * @parsed_url: The URL struct.
395 * Gets the path part of URL.
400 purple_http_url_get_path(const PurpleHttpURL
*parsed_url
);
403 * purple_http_url_get_fragment:
404 * @parsed_url: The URL struct.
406 * Gets the fragment part of URL.
408 * Returns: The fragment.
411 purple_http_url_get_fragment(const PurpleHttpURL
*parsed_url
);
414 /**************************************************************************/
416 /**************************************************************************/
419 * purple_http_cookie_jar_new:
421 * Creates new cookie jar,
423 * Returns: empty cookie jar.
425 PurpleHttpCookieJar
* purple_http_cookie_jar_new(void);
428 * purple_http_cookie_jar_ref:
429 * @cookie_jar: The cookie jar.
431 * Increment the reference count.
433 void purple_http_cookie_jar_ref(PurpleHttpCookieJar
*cookie_jar
);
436 * purple_http_cookie_jar_unref:
437 * @cookie_jar: The cookie jar.
439 * Decrement the reference count.
441 * If the reference count reaches zero, the cookie jar will be freed.
443 * Returns: @cookie_jar or %NULL if the reference count reached zero.
445 PurpleHttpCookieJar
* purple_http_cookie_jar_unref(
446 PurpleHttpCookieJar
*cookie_jar
);
449 * purple_http_cookie_jar_set:
450 * @cookie_jar: The cookie jar.
451 * @name: Cookie name.
452 * @value: Cookie contents.
456 void purple_http_cookie_jar_set(PurpleHttpCookieJar
*cookie_jar
,
457 const gchar
*name
, const gchar
*value
);
460 * purple_http_cookie_jar_get:
461 * @cookie_jar: The cookie jar.
462 * @name: Cookie name.
466 * The result must be g_free'd.
468 * Returns: Cookie contents, or NULL, if cookie doesn't exists.
470 gchar
* purple_http_cookie_jar_get(PurpleHttpCookieJar
*cookie_jar
,
474 * purple_http_cookie_jar_is_empty:
475 * @cookie_jar: The cookie jar.
477 * Checks, if the cookie jar contains any cookies.
479 * Returns: TRUE, if cookie jar contains any cookie, FALSE otherwise.
481 gboolean
purple_http_cookie_jar_is_empty(PurpleHttpCookieJar
*cookie_jar
);
484 /**************************************************************************/
485 /* HTTP Request API */
486 /**************************************************************************/
489 * purple_http_request_new:
490 * @url: The URL to request for, or NULL to leave empty (to be set with
491 * purple_http_request_set_url).
493 * Creates the new instance of HTTP request configuration.
495 * Returns: The new instance of HTTP request struct.
497 PurpleHttpRequest
* purple_http_request_new(const gchar
*url
);
500 * purple_http_request_ref:
501 * @request: The request.
503 * Increment the reference count.
505 void purple_http_request_ref(PurpleHttpRequest
*request
);
508 * purple_http_request_unref:
509 * @request: The request.
511 * Decrement the reference count.
513 * If the reference count reaches zero, the http request struct will be freed.
515 * Returns: @request or %NULL if the reference count reached zero.
517 PurpleHttpRequest
* purple_http_request_unref(PurpleHttpRequest
*request
);
520 * purple_http_request_set_url:
521 * @request: The request.
524 * Sets URL for HTTP request.
526 void purple_http_request_set_url(PurpleHttpRequest
*request
, const gchar
*url
);
529 * purple_http_request_set_url_printf:
530 * @request: The request.
531 * @format: The format string.
533 * Constructs and sets an URL for HTTP request.
535 void purple_http_request_set_url_printf(PurpleHttpRequest
*request
,
536 const gchar
*format
, ...) G_GNUC_PRINTF(2, 3);
539 * purple_http_request_get_url:
540 * @request: The request.
542 * Gets URL set for the HTTP request.
544 * Returns: URL set for this request.
546 const gchar
* purple_http_request_get_url(PurpleHttpRequest
*request
);
549 * purple_http_request_set_method:
550 * @request: The request.
551 * @method: The method, or NULL for default.
553 * Sets custom HTTP method used for the request.
555 void purple_http_request_set_method(PurpleHttpRequest
*request
,
556 const gchar
*method
);
559 * purple_http_request_get_method:
560 * @request: The request.
562 * Gets HTTP method set for the request.
564 * Returns: The method.
566 const gchar
* purple_http_request_get_method(PurpleHttpRequest
*request
);
569 * purple_http_request_set_keepalive_pool:
570 * @request: The request.
571 * @pool: The new KeepAlive pool, or NULL to reset.
573 * Sets HTTP KeepAlive connections pool for the request.
575 * It increases pool's reference count.
578 purple_http_request_set_keepalive_pool(PurpleHttpRequest
*request
,
579 PurpleHttpKeepalivePool
*pool
);
582 * purple_http_request_get_keepalive_pool:
583 * @request: The request.
585 * Gets HTTP KeepAlive connections pool associated with the request.
587 * It doesn't affect pool's reference count.
589 * Returns: The KeepAlive pool, used for the request.
591 PurpleHttpKeepalivePool
*
592 purple_http_request_get_keepalive_pool(PurpleHttpRequest
*request
);
595 * purple_http_request_set_contents:
596 * @request: The request.
597 * @contents: The contents.
598 * @length: The length of contents (-1 if it's a NULL-terminated string)
600 * Sets contents of HTTP request (for example, POST data).
602 void purple_http_request_set_contents(PurpleHttpRequest
*request
,
603 const gchar
*contents
, int length
);
606 * purple_http_request_set_contents_reader:
607 * @request: The request.
608 * @reader: (scope call): The reader callback.
609 * @contents_length: The size of all contents.
610 * @user_data: The user data to pass to the callback function.
612 * Sets contents reader for HTTP request, used mainly for possible large
615 void purple_http_request_set_contents_reader(PurpleHttpRequest
*request
,
616 PurpleHttpContentReader reader
, int contents_length
, gpointer user_data
);
619 * purple_http_request_set_response_writer:
620 * @request: The request.
621 * @writer: (scope call): The writer callback, or %NULL to remove existing.
622 * @user_data: The user data to pass to the callback function.
624 * Set contents writer for HTTP response.
626 void purple_http_request_set_response_writer(PurpleHttpRequest
*request
,
627 PurpleHttpContentWriter writer
, gpointer user_data
);
630 * purple_http_request_set_timeout:
631 * @request: The request.
632 * @timeout: Time (in seconds) after that timeout will be cancelled,
633 * -1 for infinite time.
635 * Set maximum amount of time, that request is allowed to run.
637 void purple_http_request_set_timeout(PurpleHttpRequest
*request
, int timeout
);
640 * purple_http_request_get_timeout:
641 * @request: The request.
643 * Get maximum amount of time, that request is allowed to run.
645 * Returns: Timeout currently set (-1 for infinite).
647 int purple_http_request_get_timeout(PurpleHttpRequest
*request
);
650 * purple_http_request_set_max_redirects:
651 * @request: The request.
652 * @max_redirects: Maximum amount of redirects, or -1 for unlimited.
654 * Sets maximum amount of redirects.
656 void purple_http_request_set_max_redirects(PurpleHttpRequest
*request
,
660 * purple_http_request_get_max_redirects:
661 * @request: The request.
663 * Gets maximum amount of redirects.
665 * Returns: Current maximum amount of redirects (-1 for unlimited).
667 int purple_http_request_get_max_redirects(PurpleHttpRequest
*request
);
670 * purple_http_request_set_cookie_jar:
671 * @request: The request.
672 * @cookie_jar: The cookie jar.
674 * Sets cookie jar used for the request.
676 void purple_http_request_set_cookie_jar(PurpleHttpRequest
*request
,
677 PurpleHttpCookieJar
*cookie_jar
);
680 * purple_http_request_get_cookie_jar:
681 * @request: The request.
683 * Gets cookie jar used for the request.
685 * Returns: The cookie jar.
687 PurpleHttpCookieJar
* purple_http_request_get_cookie_jar(
688 PurpleHttpRequest
*request
);
691 * purple_http_request_set_http11:
692 * @request: The request.
693 * @http11: TRUE for HTTP/1.1, FALSE for HTTP/1.0.
695 * Sets HTTP version to use.
697 void purple_http_request_set_http11(PurpleHttpRequest
*request
,
701 * purple_http_request_is_http11:
702 * @request: The request.
704 * Gets used HTTP version.
706 * Returns: TRUE, if we use HTTP/1.1, FALSE for HTTP/1.0.
708 gboolean
purple_http_request_is_http11(PurpleHttpRequest
*request
);
711 * purple_http_request_set_max_len:
712 * @request: The request.
713 * @max_len: Maximum length of response to read (-1 for the maximum
716 * Sets maximum length of response content to read.
718 * Headers length doesn't count here.
721 void purple_http_request_set_max_len(PurpleHttpRequest
*request
, int max_len
);
724 * purple_http_request_get_max_len:
725 * @request: The request.
727 * Gets maximum length of response content to read.
729 * Returns: Maximum length of response to read, or -1 if unlimited.
731 int purple_http_request_get_max_len(PurpleHttpRequest
*request
);
734 * purple_http_request_header_set:
735 * @request: The request.
736 * @key: A header to be set.
737 * @value: A value to set, or NULL to remove specified header.
739 * Sets (replaces, if exists) specified HTTP request header with provided value.
741 * See purple_http_request_header_add().
743 void purple_http_request_header_set(PurpleHttpRequest
*request
,
744 const gchar
*key
, const gchar
*value
);
747 * purple_http_request_header_set_printf:
748 * @request: The request.
749 * @key: A header to be set.
750 * @format: The format string.
752 * Constructs and sets (replaces, if exists) specified HTTP request header.
754 void purple_http_request_header_set_printf(PurpleHttpRequest
*request
,
755 const gchar
*key
, const gchar
*format
, ...) G_GNUC_PRINTF(3, 4);
758 * purple_http_request_header_add:
759 * @key: A header to be set.
760 * @value: A value to set.
762 * Adds (without replacing, if exists) an HTTP request header.
764 * See purple_http_request_header_set().
766 void purple_http_request_header_add(PurpleHttpRequest
*request
,
767 const gchar
*key
, const gchar
*value
);
770 /**************************************************************************/
771 /* HTTP Keep-Alive pool API */
772 /**************************************************************************/
775 * purple_http_keepalive_pool_new:
777 * Creates a new HTTP Keep-Alive pool.
779 PurpleHttpKeepalivePool
*
780 purple_http_keepalive_pool_new(void);
783 * purple_http_keepalive_pool_ref:
784 * @pool: The HTTP Keep-Alive pool.
786 * Increment the reference count.
789 purple_http_keepalive_pool_ref(PurpleHttpKeepalivePool
*pool
);
792 * purple_http_keepalive_pool_unref:
793 * @pool: The HTTP Keep-Alive pool.
795 * Decrement the reference count.
797 * If the reference count reaches zero, the pool will be freed and all
798 * connections will be closed.
800 * Returns: @pool or %NULL if the reference count reached zero.
802 PurpleHttpKeepalivePool
*
803 purple_http_keepalive_pool_unref(PurpleHttpKeepalivePool
*pool
);
806 * purple_http_keepalive_pool_set_limit_per_host:
807 * @pool: The HTTP Keep-Alive pool.
808 * @limit: The new limit, 0 for unlimited.
810 * Sets maximum allowed number of connections to specific host-triple (is_ssl +
814 purple_http_keepalive_pool_set_limit_per_host(PurpleHttpKeepalivePool
*pool
,
818 * purple_http_keepalive_pool_get_limit_per_host:
819 * @pool: The HTTP Keep-Alive pool.
821 * Gets maximum allowed number of connections to specific host-triple (is_ssl +
824 * Returns: The limit.
827 purple_http_keepalive_pool_get_limit_per_host(PurpleHttpKeepalivePool
*pool
);
830 /**************************************************************************/
831 /* HTTP connection set API */
832 /**************************************************************************/
834 PurpleHttpConnectionSet
*
835 purple_http_connection_set_new(void);
838 purple_http_connection_set_destroy(PurpleHttpConnectionSet
*set
);
841 purple_http_connection_set_add(PurpleHttpConnectionSet
*set
,
842 PurpleHttpConnection
*http_conn
);
845 /**************************************************************************/
846 /* HTTP response API */
847 /**************************************************************************/
850 * purple_http_response_is_successful:
851 * @response: The response.
853 * Checks, if HTTP request was performed successfully.
855 * Returns: TRUE, if request was performed successfully.
857 gboolean
purple_http_response_is_successful(PurpleHttpResponse
*response
);
860 * purple_http_response_get_code:
861 * @response: The response.
863 * Gets HTTP response code.
865 * Returns: HTTP response code.
867 int purple_http_response_get_code(PurpleHttpResponse
*response
);
870 * purple_http_response_get_error:
871 * @response: The response.
873 * Gets error description.
875 * Returns: Localized error description or NULL, if there was no error.
877 const gchar
* purple_http_response_get_error(PurpleHttpResponse
*response
);
880 * purple_http_response_get_data_len:
881 * @response: The response.
883 * Gets HTTP response data length.
885 * Returns: Data length;
887 gsize
purple_http_response_get_data_len(PurpleHttpResponse
*response
);
890 * purple_http_response_get_data:
891 * @response: The response.
892 * @len: Return address for the size of the data. Can be NULL.
894 * Gets HTTP response data.
896 * Response data is not written, if writer callback was set for request.
900 const gchar
* purple_http_response_get_data(PurpleHttpResponse
*response
, size_t *len
);
903 * purple_http_response_get_all_headers:
904 * @response: The response.
906 * Gets all headers got with response.
908 * Returns: GList of PurpleKeyValuePair, which keys are header field
909 * names (gchar*) and values are its contents (gchar*).
911 const GList
* purple_http_response_get_all_headers(PurpleHttpResponse
*response
);
914 * purple_http_response_get_headers_by_name:
915 * @response: The response.
916 * @name: The name of header field.
918 * Gets all headers with specified name got with response.
920 * Returns: GList of header field records contents (gchar*).
922 const GList
* purple_http_response_get_headers_by_name(
923 PurpleHttpResponse
*response
, const gchar
*name
);
926 * purple_http_response_get_header:
927 * @response: The response.
928 * @name: The name of header field.
930 * Gets one header contents with specified name got with response.
932 * To get all headers with the same name, use
933 * purple_http_response_get_headers_by_name instead.
935 * Returns: Header field contents or NULL, if there is no such one.
937 const gchar
* purple_http_response_get_header(PurpleHttpResponse
*response
,
941 /**************************************************************************/
943 /**************************************************************************/
948 * Initializes the http subsystem.
950 void purple_http_init(void);
953 * purple_http_uninit:
955 * Uninitializes the http subsystem.
957 void purple_http_uninit(void);
961 #endif /* _PURPLE_HTTP_H_ */