summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-soup-uri.h
blob: 650b7efcd3c5b18a60aeedb8786e4cbe97270515 (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
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */

/* 
 * Copyright 1999-2002 Ximian, Inc.
 */

/* NOTE - taken from the libsoup codebase for use by the ostree curl backend
 * (yes, ironically enough).
 *
 * Please watch for future changes in libsoup.
 */


#ifndef  SOUP_URI_H
#define  SOUP_URI_H 1

/* OSTREECHANGE: make struct private
 * Only include gio, and skip available definitions.
 */
#include <gio/gio.h>
#define SOUP_AVAILABLE_IN_2_4
#define SOUP_AVAILABLE_IN_2_28
#define SOUP_AVAILABLE_IN_2_32

G_BEGIN_DECLS

/* OSTREECHANGE: make struct private */
typedef struct _SoupURI SoupURI;

/* OSTREECHANGE: import soup-misc's interning */
#define SOUP_VAR extern
#define _SOUP_ATOMIC_INTERN_STRING(variable, value) ((const char *)(g_atomic_pointer_get (&(variable)) ? (variable) : (g_atomic_pointer_set (&(variable), (gpointer)g_intern_static_string (value)), (variable))))
#define SOUP_URI_SCHEME_HTTP     _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTP, "http")
#define SOUP_URI_SCHEME_HTTPS    _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTPS, "https")
#define SOUP_URI_SCHEME_FTP      _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_FTP, "ftp")
#define SOUP_URI_SCHEME_FILE     _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_FILE, "file")
#define SOUP_URI_SCHEME_DATA     _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_DATA, "data")
#define SOUP_URI_SCHEME_RESOURCE _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_RESOURCE, "resource")
#define SOUP_URI_SCHEME_WS       _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_WS, "ws")
#define SOUP_URI_SCHEME_WSS      _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_WSS, "wss")

/* OSTREECHANGE: import soup-form bits */
SOUP_AVAILABLE_IN_2_4
char        *soup_form_encode_hash      (GHashTable   *form_data_set);
SOUP_AVAILABLE_IN_2_4
char        *soup_form_encode_valist    (const char   *first_field,
					 va_list       args);

SOUP_VAR gpointer _SOUP_URI_SCHEME_HTTP, _SOUP_URI_SCHEME_HTTPS;
SOUP_VAR gpointer _SOUP_URI_SCHEME_FTP;
SOUP_VAR gpointer _SOUP_URI_SCHEME_FILE, _SOUP_URI_SCHEME_DATA, _SOUP_URI_SCHEME_RESOURCE;
SOUP_VAR gpointer _SOUP_URI_SCHEME_WS, _SOUP_URI_SCHEME_WSS;

SOUP_AVAILABLE_IN_2_4
SoupURI	   *soup_uri_new_with_base         (SoupURI    *base,
					    const char *uri_string);
SOUP_AVAILABLE_IN_2_4
SoupURI	   *soup_uri_new                   (const char *uri_string);

SOUP_AVAILABLE_IN_2_4
char	   *soup_uri_to_string		   (SoupURI    *uri,
					    gboolean    just_path_and_query);

SOUP_AVAILABLE_IN_2_4
SoupURI	   *soup_uri_copy                  (SoupURI    *uri);

SOUP_AVAILABLE_IN_2_4
gboolean    soup_uri_equal                 (SoupURI    *uri1,
					    SoupURI    *uri2);

SOUP_AVAILABLE_IN_2_4
void	    soup_uri_free		   (SoupURI    *uri);

SOUP_AVAILABLE_IN_2_4
char	   *soup_uri_encode		   (const char *part,
					    const char *escape_extra);
SOUP_AVAILABLE_IN_2_4
char	   *soup_uri_decode		   (const char *part);
SOUP_AVAILABLE_IN_2_4
char	   *soup_uri_normalize		   (const char *part,
					    const char *unescape_extra);

SOUP_AVAILABLE_IN_2_4
gboolean    soup_uri_uses_default_port     (SoupURI    *uri);

SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_scheme            (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_scheme            (SoupURI    *uri,
					    const char *scheme);
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_user              (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_user              (SoupURI    *uri,
					    const char *user);
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_password          (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_password          (SoupURI    *uri,
					    const char *password);
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_host              (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_host              (SoupURI    *uri,
					    const char *host);
SOUP_AVAILABLE_IN_2_32
guint       soup_uri_get_port              (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_port              (SoupURI    *uri,
					    guint       port);
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_path              (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_path              (SoupURI    *uri,
					    const char *path);
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_query             (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_query             (SoupURI    *uri,
					    const char *query);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_query_from_form   (SoupURI    *uri,
					    GHashTable *form);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_query_from_fields (SoupURI    *uri,
					    const char *first_field,
					    ...) G_GNUC_NULL_TERMINATED;
SOUP_AVAILABLE_IN_2_32
const char *soup_uri_get_fragment          (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_4
void        soup_uri_set_fragment          (SoupURI    *uri,
					    const char *fragment);

SOUP_AVAILABLE_IN_2_28
SoupURI    *soup_uri_copy_host             (SoupURI    *uri);
SOUP_AVAILABLE_IN_2_28
guint       soup_uri_host_hash             (gconstpointer key);
SOUP_AVAILABLE_IN_2_28
gboolean    soup_uri_host_equal            (gconstpointer v1,
					    gconstpointer v2);

#define   SOUP_URI_IS_VALID(uri)       ((uri) && (uri)->scheme && (uri)->path)
#define   SOUP_URI_VALID_FOR_HTTP(uri) ((uri) && ((uri)->scheme == SOUP_URI_SCHEME_HTTP || (uri)->scheme == SOUP_URI_SCHEME_HTTPS) && (uri)->host && (uri)->path)

G_END_DECLS

#endif /*SOUP_URI_H*/