soup-uri.h 4.9 KB

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