1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 3 /* 4 * Copyright 1999-2002 Ximian, Inc. 5 */ 6 7 8 #ifndef __SOUP_URI_H__ 9 #define __SOUP_URI_H__ 1 10 11 #include <libsoup/soup-types.h> 12 #include <libsoup/soup-misc.h> 13 14 G_BEGIN_DECLS 15 16 struct _SoupURI { 17 const char *scheme; 18 19 char *user; 20 char *password; 21 22 char *host; 23 guint port; 24 25 char *path; 26 char *query; 27 28 char *fragment; 29 }; 30 31 SOUP_AVAILABLE_IN_2_4 32 GType soup_uri_get_type (void); 33 #define SOUP_TYPE_URI (soup_uri_get_type ()) 34 35 #define SOUP_URI_SCHEME_HTTP _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTP, "http") 36 #define SOUP_URI_SCHEME_HTTPS _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_HTTPS, "https") 37 #define SOUP_URI_SCHEME_FTP _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_FTP, "ftp") 38 #define SOUP_URI_SCHEME_FILE _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_FILE, "file") 39 #define SOUP_URI_SCHEME_DATA _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_DATA, "data") 40 #define SOUP_URI_SCHEME_RESOURCE _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_RESOURCE, "resource") 41 #define SOUP_URI_SCHEME_WS _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_WS, "ws") 42 #define SOUP_URI_SCHEME_WSS _SOUP_ATOMIC_INTERN_STRING (_SOUP_URI_SCHEME_WSS, "wss") 43 44 SOUP_VAR gpointer _SOUP_URI_SCHEME_HTTP, _SOUP_URI_SCHEME_HTTPS; 45 SOUP_VAR gpointer _SOUP_URI_SCHEME_FTP; 46 SOUP_VAR gpointer _SOUP_URI_SCHEME_FILE, _SOUP_URI_SCHEME_DATA, _SOUP_URI_SCHEME_RESOURCE; 47 SOUP_VAR gpointer _SOUP_URI_SCHEME_WS, _SOUP_URI_SCHEME_WSS; 48 49 SOUP_AVAILABLE_IN_2_4 50 SoupURI *soup_uri_new_with_base (SoupURI *base, 51 const char *uri_string); 52 SOUP_AVAILABLE_IN_2_4 53 SoupURI *soup_uri_new (const char *uri_string); 54 55 SOUP_AVAILABLE_IN_2_4 56 char *soup_uri_to_string (SoupURI *uri, 57 gboolean just_path_and_query); 58 59 SOUP_AVAILABLE_IN_2_4 60 SoupURI *soup_uri_copy (SoupURI *uri); 61 62 SOUP_AVAILABLE_IN_2_4 63 gboolean soup_uri_equal (SoupURI *uri1, 64 SoupURI *uri2); 65 66 SOUP_AVAILABLE_IN_2_4 67 void soup_uri_free (SoupURI *uri); 68 69 SOUP_AVAILABLE_IN_2_4 70 char *soup_uri_encode (const char *part, 71 const char *escape_extra); 72 SOUP_AVAILABLE_IN_2_4 73 char *soup_uri_decode (const char *part); 74 SOUP_AVAILABLE_IN_2_4 75 char *soup_uri_normalize (const char *part, 76 const char *unescape_extra); 77 78 SOUP_AVAILABLE_IN_2_4 79 gboolean soup_uri_uses_default_port (SoupURI *uri); 80 81 SOUP_AVAILABLE_IN_2_32 82 const char *soup_uri_get_scheme (SoupURI *uri); 83 SOUP_AVAILABLE_IN_2_4 84 void soup_uri_set_scheme (SoupURI *uri, 85 const char *scheme); 86 SOUP_AVAILABLE_IN_2_32 87 const char *soup_uri_get_user (SoupURI *uri); 88 SOUP_AVAILABLE_IN_2_4 89 void soup_uri_set_user (SoupURI *uri, 90 const char *user); 91 SOUP_AVAILABLE_IN_2_32 92 const char *soup_uri_get_password (SoupURI *uri); 93 SOUP_AVAILABLE_IN_2_4 94 void soup_uri_set_password (SoupURI *uri, 95 const char *password); 96 SOUP_AVAILABLE_IN_2_32 97 const char *soup_uri_get_host (SoupURI *uri); 98 SOUP_AVAILABLE_IN_2_4 99 void soup_uri_set_host (SoupURI *uri, 100 const char *host); 101 SOUP_AVAILABLE_IN_2_32 102 guint soup_uri_get_port (SoupURI *uri); 103 SOUP_AVAILABLE_IN_2_4 104 void soup_uri_set_port (SoupURI *uri, 105 guint port); 106 SOUP_AVAILABLE_IN_2_32 107 const char *soup_uri_get_path (SoupURI *uri); 108 SOUP_AVAILABLE_IN_2_4 109 void soup_uri_set_path (SoupURI *uri, 110 const char *path); 111 SOUP_AVAILABLE_IN_2_32 112 const char *soup_uri_get_query (SoupURI *uri); 113 SOUP_AVAILABLE_IN_2_4 114 void soup_uri_set_query (SoupURI *uri, 115 const char *query); 116 SOUP_AVAILABLE_IN_2_4 117 void soup_uri_set_query_from_form (SoupURI *uri, 118 GHashTable *form); 119 SOUP_AVAILABLE_IN_2_4 120 void soup_uri_set_query_from_fields (SoupURI *uri, 121 const char *first_field, 122 ...) G_GNUC_NULL_TERMINATED; 123 SOUP_AVAILABLE_IN_2_32 124 const char *soup_uri_get_fragment (SoupURI *uri); 125 SOUP_AVAILABLE_IN_2_4 126 void soup_uri_set_fragment (SoupURI *uri, 127 const char *fragment); 128 129 SOUP_AVAILABLE_IN_2_28 130 SoupURI *soup_uri_copy_host (SoupURI *uri); 131 SOUP_AVAILABLE_IN_2_28 132 guint soup_uri_host_hash (gconstpointer key); 133 SOUP_AVAILABLE_IN_2_28 134 gboolean soup_uri_host_equal (gconstpointer v1, 135 gconstpointer v2); 136 137 #define SOUP_URI_IS_VALID(uri) ((uri) && (uri)->scheme && (uri)->path) 138 #define SOUP_URI_VALID_FOR_HTTP(uri) ((uri) && ((uri)->scheme == SOUP_URI_SCHEME_HTTP || (uri)->scheme == SOUP_URI_SCHEME_HTTPS) && (uri)->host && (uri)->path) 139 140 G_END_DECLS 141 142 #endif /* __SOUP_URI_H__ */ 143