summaryrefslogtreecommitdiff
path: root/libsoup/soup-message-headers.h
blob: 4348547f5414153e6ccaa39a78cfcb03c939d61c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
/*
 * Copyright (C) 2005 Novell, Inc.
 */

#pragma once

#include "soup-types.h"

G_BEGIN_DECLS

typedef struct _SoupMessageHeaders SoupMessageHeaders;
SOUP_AVAILABLE_IN_ALL
GType soup_message_headers_get_type (void);
#define SOUP_TYPE_MESSAGE_HEADERS (soup_message_headers_get_type ())

typedef enum {
	SOUP_MESSAGE_HEADERS_REQUEST,
	SOUP_MESSAGE_HEADERS_RESPONSE,
	SOUP_MESSAGE_HEADERS_MULTIPART
} SoupMessageHeadersType;

SOUP_AVAILABLE_IN_ALL
SoupMessageHeaders *soup_message_headers_new      (SoupMessageHeadersType type);

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_free     (SoupMessageHeaders *hdrs);

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_append   (SoupMessageHeaders *hdrs,
						   const char         *name,
						   const char         *value);
SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_replace  (SoupMessageHeaders *hdrs,
						   const char         *name,
						   const char         *value);

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_remove   (SoupMessageHeaders *hdrs,
						   const char         *name);
SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_clear    (SoupMessageHeaders *hdrs);

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_clean_connection_headers (SoupMessageHeaders *hdrs);

SOUP_AVAILABLE_IN_ALL
const char         *soup_message_headers_get_one  (SoupMessageHeaders *hdrs,
						   const char         *name);
SOUP_AVAILABLE_IN_ALL
const char         *soup_message_headers_get_list (SoupMessageHeaders *hdrs,
						   const char         *name);
SOUP_AVAILABLE_IN_ALL
gboolean            soup_message_headers_header_contains (SoupMessageHeaders *hdrs,
							  const char         *name,
							  const char         *token);
SOUP_AVAILABLE_IN_ALL
gboolean            soup_message_headers_header_equals   (SoupMessageHeaders *hdrs,
							  const char         *name,
							  const char         *value);

typedef void      (*SoupMessageHeadersForeachFunc)(const char         *name,
						   const char         *value,
						   gpointer            user_data);

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_foreach  (SoupMessageHeaders *hdrs,
						   SoupMessageHeadersForeachFunc func,
						   gpointer            user_data);

SOUP_AVAILABLE_IN_ALL
SoupMessageHeadersType soup_message_headers_get_headers_type (SoupMessageHeaders *hdrs);

typedef struct {
	/*< private >*/
	gpointer dummy[3];
} SoupMessageHeadersIter;

SOUP_AVAILABLE_IN_ALL
void                soup_message_headers_iter_init (SoupMessageHeadersIter  *iter,
						    SoupMessageHeaders      *hdrs);
SOUP_AVAILABLE_IN_ALL
gboolean            soup_message_headers_iter_next (SoupMessageHeadersIter  *iter,
						    const char             **name,
						    const char             **value);

/* Specific headers */

typedef enum {
	SOUP_ENCODING_UNRECOGNIZED,
	SOUP_ENCODING_NONE,
	SOUP_ENCODING_CONTENT_LENGTH,
	SOUP_ENCODING_EOF,
	SOUP_ENCODING_CHUNKED,
	SOUP_ENCODING_BYTERANGES
} SoupEncoding;

SOUP_AVAILABLE_IN_ALL
SoupEncoding    soup_message_headers_get_encoding        (SoupMessageHeaders *hdrs);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_encoding        (SoupMessageHeaders *hdrs,
							  SoupEncoding        encoding);

SOUP_AVAILABLE_IN_ALL
goffset         soup_message_headers_get_content_length  (SoupMessageHeaders *hdrs);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_content_length  (SoupMessageHeaders *hdrs,
							  goffset             content_length);

typedef enum {
	SOUP_EXPECTATION_UNRECOGNIZED = (1 << 0),
	SOUP_EXPECTATION_CONTINUE     = (1 << 1)
} SoupExpectation;

SOUP_AVAILABLE_IN_ALL
SoupExpectation soup_message_headers_get_expectations    (SoupMessageHeaders *hdrs);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_expectations    (SoupMessageHeaders *hdrs,
							  SoupExpectation     expectations);

typedef struct {
	goffset start;
	goffset end;
} SoupRange;

SOUP_AVAILABLE_IN_ALL
gboolean        soup_message_headers_get_ranges          (SoupMessageHeaders  *hdrs,
							  goffset              total_length,
							  SoupRange          **ranges,
							  int                 *length);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_free_ranges         (SoupMessageHeaders  *hdrs,
							  SoupRange           *ranges);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_ranges          (SoupMessageHeaders  *hdrs,
							  SoupRange           *ranges,
							  int                  length);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_range           (SoupMessageHeaders  *hdrs,
							  goffset              start,
							  goffset              end);

SOUP_AVAILABLE_IN_ALL
gboolean        soup_message_headers_get_content_range   (SoupMessageHeaders  *hdrs,
							  goffset             *start,
							  goffset             *end,
							  goffset             *total_length);
SOUP_AVAILABLE_IN_ALL
void            soup_message_headers_set_content_range   (SoupMessageHeaders  *hdrs,
							  goffset              start,
							  goffset              end,
							  goffset              total_length);


SOUP_AVAILABLE_IN_ALL
const char *soup_message_headers_get_content_type     (SoupMessageHeaders  *hdrs,
						       GHashTable         **params);
SOUP_AVAILABLE_IN_ALL
void        soup_message_headers_set_content_type     (SoupMessageHeaders  *hdrs,
						       const char          *content_type,
						       GHashTable          *params);

SOUP_AVAILABLE_IN_ALL
gboolean soup_message_headers_get_content_disposition (SoupMessageHeaders  *hdrs,
						       char               **disposition,
						       GHashTable         **params);
SOUP_AVAILABLE_IN_ALL
void     soup_message_headers_set_content_disposition (SoupMessageHeaders  *hdrs,
						       const char          *disposition,
						       GHashTable          *params);

G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageHeaders, soup_message_headers_free)

G_END_DECLS