Git init
[profile/ivi/libsoup2.4.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 void                soup_message_headers_clean_connection_headers (SoupMessageHeaders *hdrs);
37
38 #ifndef LIBSOUP_DISABLE_DEPRECATED
39 const char         *soup_message_headers_get      (SoupMessageHeaders *hdrs,
40                                                    const char         *name);
41 #endif
42 const char         *soup_message_headers_get_one  (SoupMessageHeaders *hdrs,
43                                                    const char         *name);
44 const char         *soup_message_headers_get_list (SoupMessageHeaders *hdrs,
45                                                    const char         *name);
46
47 typedef void      (*SoupMessageHeadersForeachFunc)(const char         *name,
48                                                    const char         *value,
49                                                    gpointer            user_data);
50
51 void                soup_message_headers_foreach  (SoupMessageHeaders *hdrs,
52                                                    SoupMessageHeadersForeachFunc func,
53                                                    gpointer            user_data);
54
55 typedef struct {
56         /*< private >*/
57         gpointer dummy[3];
58 } SoupMessageHeadersIter;
59
60 void                soup_message_headers_iter_init (SoupMessageHeadersIter  *iter,
61                                                     SoupMessageHeaders      *hdrs);
62 gboolean            soup_message_headers_iter_next (SoupMessageHeadersIter  *iter,
63                                                     const char             **name,
64                                                     const char             **value);
65
66 /* Specific headers */
67
68 typedef enum {
69         SOUP_ENCODING_UNRECOGNIZED,
70         SOUP_ENCODING_NONE,
71         SOUP_ENCODING_CONTENT_LENGTH,
72         SOUP_ENCODING_EOF,
73         SOUP_ENCODING_CHUNKED,
74         SOUP_ENCODING_BYTERANGES
75 } SoupEncoding;
76
77 SoupEncoding    soup_message_headers_get_encoding        (SoupMessageHeaders *hdrs);
78 void            soup_message_headers_set_encoding        (SoupMessageHeaders *hdrs,
79                                                           SoupEncoding        encoding);
80
81 goffset         soup_message_headers_get_content_length  (SoupMessageHeaders *hdrs);
82 void            soup_message_headers_set_content_length  (SoupMessageHeaders *hdrs,
83                                                           goffset             content_length);
84
85 typedef enum {
86         SOUP_EXPECTATION_UNRECOGNIZED = (1 << 0),
87         SOUP_EXPECTATION_CONTINUE     = (1 << 1)
88 } SoupExpectation;
89
90 SoupExpectation soup_message_headers_get_expectations    (SoupMessageHeaders *hdrs);
91 void            soup_message_headers_set_expectations    (SoupMessageHeaders *hdrs,
92                                                           SoupExpectation     expectations);
93
94 typedef struct {
95         goffset start;
96         goffset end;
97 } SoupRange;
98
99 gboolean        soup_message_headers_get_ranges          (SoupMessageHeaders  *hdrs,
100                                                           goffset              total_length,
101                                                           SoupRange          **ranges,
102                                                           int                 *length);
103 void            soup_message_headers_free_ranges         (SoupMessageHeaders  *hdrs,
104                                                           SoupRange           *ranges);
105 void            soup_message_headers_set_ranges          (SoupMessageHeaders  *hdrs,
106                                                           SoupRange           *ranges,
107                                                           int                  length);
108 void            soup_message_headers_set_range           (SoupMessageHeaders  *hdrs,
109                                                           goffset              start,
110                                                           goffset              end);
111
112 gboolean        soup_message_headers_get_content_range   (SoupMessageHeaders  *hdrs,
113                                                           goffset             *start,
114                                                           goffset             *end,
115                                                           goffset             *total_length);
116 void            soup_message_headers_set_content_range   (SoupMessageHeaders  *hdrs,
117                                                           goffset              start,
118                                                           goffset              end,
119                                                           goffset              total_length);
120
121
122 const char *soup_message_headers_get_content_type     (SoupMessageHeaders  *hdrs,
123                                                        GHashTable         **params);
124 void        soup_message_headers_set_content_type     (SoupMessageHeaders  *hdrs,
125                                                        const char          *content_type,
126                                                        GHashTable          *params);
127
128 gboolean soup_message_headers_get_content_disposition (SoupMessageHeaders  *hdrs,
129                                                        char               **disposition,
130                                                        GHashTable         **params);
131 void     soup_message_headers_set_content_disposition (SoupMessageHeaders  *hdrs,
132                                                        const char          *disposition,
133                                                        GHashTable          *params);
134
135 #endif /* SOUP_MESSAGE_HEADERS_H */