soup-auth-manager: add soup_auth_manager_use_auth()
[platform/upstream/libsoup.git] / libsoup / soup-message-headers.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2005 Novell, Inc.
4  */
5
6 #ifndef SOUP_MESSAGE_HEADERS_H
7 #define SOUP_MESSAGE_HEADERS_H 1
8
9 #include <libsoup/soup-types.h>
10
11 typedef struct SoupMessageHeaders SoupMessageHeaders;
12 GType soup_message_headers_get_type (void);
13 #define SOUP_TYPE_MESSAGE_HEADERS (soup_message_headers_get_type ())
14
15 typedef enum {
16         SOUP_MESSAGE_HEADERS_REQUEST,
17         SOUP_MESSAGE_HEADERS_RESPONSE,
18         SOUP_MESSAGE_HEADERS_MULTIPART
19 } SoupMessageHeadersType;
20
21 SoupMessageHeaders *soup_message_headers_new      (SoupMessageHeadersType type);
22
23 void                soup_message_headers_free     (SoupMessageHeaders *hdrs);
24
25 void                soup_message_headers_append   (SoupMessageHeaders *hdrs,
26                                                    const char         *name,
27                                                    const char         *value);
28 void                soup_message_headers_replace  (SoupMessageHeaders *hdrs,
29                                                    const char         *name,
30                                                    const char         *value);
31
32 void                soup_message_headers_remove   (SoupMessageHeaders *hdrs,
33                                                    const char         *name);
34 void                soup_message_headers_clear    (SoupMessageHeaders *hdrs);
35
36 SOUP_AVAILABLE_IN_2_36
37 void                soup_message_headers_clean_connection_headers (SoupMessageHeaders *hdrs);
38
39 #ifndef LIBSOUP_DISABLE_DEPRECATED
40 SOUP_DEPRECATED_IN_2_28_FOR ("soup_message_headers_get_one or soup_message_headers_get_list")
41 const char         *soup_message_headers_get      (SoupMessageHeaders *hdrs,
42                                                    const char         *name);
43 #endif
44 SOUP_AVAILABLE_IN_2_28
45 const char         *soup_message_headers_get_one  (SoupMessageHeaders *hdrs,
46                                                    const char         *name);
47 SOUP_AVAILABLE_IN_2_28
48 const char         *soup_message_headers_get_list (SoupMessageHeaders *hdrs,
49                                                    const char         *name);
50
51 typedef void      (*SoupMessageHeadersForeachFunc)(const char         *name,
52                                                    const char         *value,
53                                                    gpointer            user_data);
54
55 void                soup_message_headers_foreach  (SoupMessageHeaders *hdrs,
56                                                    SoupMessageHeadersForeachFunc func,
57                                                    gpointer            user_data);
58
59 typedef struct {
60         /*< private >*/
61         gpointer dummy[3];
62 } SoupMessageHeadersIter;
63
64 void                soup_message_headers_iter_init (SoupMessageHeadersIter  *iter,
65                                                     SoupMessageHeaders      *hdrs);
66 gboolean            soup_message_headers_iter_next (SoupMessageHeadersIter  *iter,
67                                                     const char             **name,
68                                                     const char             **value);
69
70 /* Specific headers */
71
72 typedef enum {
73         SOUP_ENCODING_UNRECOGNIZED,
74         SOUP_ENCODING_NONE,
75         SOUP_ENCODING_CONTENT_LENGTH,
76         SOUP_ENCODING_EOF,
77         SOUP_ENCODING_CHUNKED,
78         SOUP_ENCODING_BYTERANGES
79 } SoupEncoding;
80
81 SoupEncoding    soup_message_headers_get_encoding        (SoupMessageHeaders *hdrs);
82 void            soup_message_headers_set_encoding        (SoupMessageHeaders *hdrs,
83                                                           SoupEncoding        encoding);
84
85 goffset         soup_message_headers_get_content_length  (SoupMessageHeaders *hdrs);
86 void            soup_message_headers_set_content_length  (SoupMessageHeaders *hdrs,
87                                                           goffset             content_length);
88
89 typedef enum {
90         SOUP_EXPECTATION_UNRECOGNIZED = (1 << 0),
91         SOUP_EXPECTATION_CONTINUE     = (1 << 1)
92 } SoupExpectation;
93
94 SoupExpectation soup_message_headers_get_expectations    (SoupMessageHeaders *hdrs);
95 void            soup_message_headers_set_expectations    (SoupMessageHeaders *hdrs,
96                                                           SoupExpectation     expectations);
97
98 typedef struct {
99         goffset start;
100         goffset end;
101 } SoupRange;
102
103 SOUP_AVAILABLE_IN_2_26
104 gboolean        soup_message_headers_get_ranges          (SoupMessageHeaders  *hdrs,
105                                                           goffset              total_length,
106                                                           SoupRange          **ranges,
107                                                           int                 *length);
108 SOUP_AVAILABLE_IN_2_26
109 void            soup_message_headers_free_ranges         (SoupMessageHeaders  *hdrs,
110                                                           SoupRange           *ranges);
111 SOUP_AVAILABLE_IN_2_26
112 void            soup_message_headers_set_ranges          (SoupMessageHeaders  *hdrs,
113                                                           SoupRange           *ranges,
114                                                           int                  length);
115 SOUP_AVAILABLE_IN_2_26
116 void            soup_message_headers_set_range           (SoupMessageHeaders  *hdrs,
117                                                           goffset              start,
118                                                           goffset              end);
119
120 SOUP_AVAILABLE_IN_2_26
121 gboolean        soup_message_headers_get_content_range   (SoupMessageHeaders  *hdrs,
122                                                           goffset             *start,
123                                                           goffset             *end,
124                                                           goffset             *total_length);
125 SOUP_AVAILABLE_IN_2_26
126 void            soup_message_headers_set_content_range   (SoupMessageHeaders  *hdrs,
127                                                           goffset              start,
128                                                           goffset              end,
129                                                           goffset              total_length);
130
131
132 SOUP_AVAILABLE_IN_2_26
133 const char *soup_message_headers_get_content_type     (SoupMessageHeaders  *hdrs,
134                                                        GHashTable         **params);
135 SOUP_AVAILABLE_IN_2_26
136 void        soup_message_headers_set_content_type     (SoupMessageHeaders  *hdrs,
137                                                        const char          *content_type,
138                                                        GHashTable          *params);
139
140 SOUP_AVAILABLE_IN_2_26
141 gboolean soup_message_headers_get_content_disposition (SoupMessageHeaders  *hdrs,
142                                                        char               **disposition,
143                                                        GHashTable         **params);
144 SOUP_AVAILABLE_IN_2_26
145 void     soup_message_headers_set_content_disposition (SoupMessageHeaders  *hdrs,
146                                                        const char          *disposition,
147                                                        GHashTable          *params);
148
149 #endif /* SOUP_MESSAGE_HEADERS_H */