summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kellner <gicmo@gnome.org>2011-05-12 16:23:33 +0200
committerChristian Kellner <gicmo@gnome.org>2011-05-12 16:23:33 +0200
commitcea1452ed6ae4566d6f6c6a214026fb13e9d957a (patch)
treecdf6bf470bed060d143178b99cbb4f82328dcac5
parentbc9c779e1af4763f39e7065fb14747febad7fa8d (diff)
downloadgvfs-cea1452ed6ae4566d6f6c6a214026fb13e9d957a.tar.gz
http/dav: Move http_backend_uri_for_filename to dav backend
Since we don't need that function in the http backend anymore move it to the dav backend as g_vfs_backend_dav_uri_for_path ().
-rw-r--r--daemon/gvfsbackenddav.c52
-rw-r--r--daemon/gvfsbackendhttp.c35
-rw-r--r--daemon/gvfsbackendhttp.h5
3 files changed, 44 insertions, 48 deletions
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index 9e75ded2..438e625e 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -275,6 +275,42 @@ message_should_apply_redir_ref (SoupMessage *msg)
return TRUE;
}
+
+static SoupURI *
+g_vfs_backend_dav_uri_for_path (GVfsBackend *backend,
+ const char *filename,
+ gboolean is_dir)
+{
+ SoupURI *mount_base;
+ SoupURI *uri;
+ char *path;
+
+ mount_base = http_backend_get_mount_base (backend);
+ uri = soup_uri_copy (mount_base);
+
+ /* "/" means "whatever mount_base is" */
+ if (!strcmp (filename, "/"))
+ return uri;
+
+ /* Otherwise, we append filename to mount_base (which is assumed to
+ * be a directory in this case).
+ *
+ * Add a "/" in cases where it is likely that the url is going
+ * to be a directory to avoid redirections
+ */
+ if (is_dir == FALSE || g_str_has_suffix (filename, "/"))
+ path = g_build_path ("/", uri->path, filename, NULL);
+ else
+ path = g_build_path ("/", uri->path, filename, "/", NULL);
+
+ g_free (uri->path);
+ uri->path = g_uri_escape_string (path, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH,
+ FALSE);
+ g_free (path);
+
+ return uri;
+}
+
/* redirection */
static void
redirect_handler (SoupMessage *msg, gpointer user_data)
@@ -1040,7 +1076,7 @@ propfind_request_new (GVfsBackend *backend,
const char *header_depth;
GString *body;
- uri = http_backend_uri_for_filename (backend, filename, depth > 0);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, depth > 0);
msg = soup_message_new_from_uri (SOUP_METHOD_PROPFIND, uri);
soup_uri_free (uri);
@@ -1964,7 +2000,7 @@ try_open_for_read (GVfsBackend *backend,
SoupMessage *msg;
SoupURI *uri;
- uri = http_backend_uri_for_filename (backend, filename, FALSE);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, FALSE);
msg = stat_location_begin (uri, FALSE);
soup_uri_free (uri);
@@ -2033,7 +2069,7 @@ try_create (GVfsBackend *backend,
/* TODO: if SoupOutputStream supported chunked requests, we could
* use a PUT with "If-None-Match: *" and "Expect: 100-continue"
*/
- uri = http_backend_uri_for_filename (backend, filename, FALSE);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, FALSE);
msg = soup_message_new_from_uri (SOUP_METHOD_HEAD, uri);
soup_uri_free (uri);
@@ -2112,7 +2148,7 @@ try_replace (GVfsBackend *backend,
- uri = http_backend_uri_for_filename (backend, filename, FALSE);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, FALSE);
if (etag)
{
@@ -2245,7 +2281,7 @@ do_make_directory (GVfsBackend *backend,
SoupURI *uri;
guint status;
- uri = http_backend_uri_for_filename (backend, filename, TRUE);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, TRUE);
msg = soup_message_new_from_uri (SOUP_METHOD_MKCOL, uri);
soup_uri_free (uri);
@@ -2281,7 +2317,7 @@ do_delete (GVfsBackend *backend,
error = NULL;
- uri = http_backend_uri_for_filename (backend, filename, FALSE);
+ uri = g_vfs_backend_dav_uri_for_path (backend, filename, FALSE);
res = stat_location (backend, uri, &file_type, &num_children, &error);
if (res == FALSE)
@@ -2328,12 +2364,12 @@ do_set_display_name (GVfsBackend *backend,
char *dirname;
guint status;
- source = http_backend_uri_for_filename (backend, filename, FALSE);
+ source = g_vfs_backend_dav_uri_for_path (backend, filename, FALSE);
msg = soup_message_new_from_uri (SOUP_METHOD_MOVE, source);
dirname = g_path_get_dirname (filename);
target_path = g_build_filename (dirname, display_name, NULL);
- target = http_backend_uri_for_filename (backend, target_path, FALSE);
+ target = g_vfs_backend_dav_uri_for_path (backend, target_path, FALSE);
message_add_destination_header (msg, target);
message_add_overwrite_header (msg, FALSE);
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
index e0ce1284..6c60e0b0 100644
--- a/daemon/gvfsbackendhttp.c
+++ b/daemon/gvfsbackendhttp.c
@@ -143,41 +143,6 @@ http_backend_get_mount_base (GVfsBackend *backend)
return G_VFS_BACKEND_HTTP (backend)->mount_base;
}
-SoupURI *
-http_backend_uri_for_filename (GVfsBackend *backend,
- const char *filename,
- gboolean is_dir)
-{
- GVfsBackendHttp *op_backend;
- SoupURI *uri;
- char *path;
-
- op_backend = G_VFS_BACKEND_HTTP (backend);
- uri = soup_uri_copy (op_backend->mount_base);
-
- /* "/" means "whatever mount_base is" */
- if (!strcmp (filename, "/"))
- return uri;
-
- /* Otherwise, we append filename to mount_base (which is assumed to
- * be a directory in this case).
- *
- * Add a "/" in cases where it is likely that the url is going
- * to be a directory to avoid redirections
- */
- if (is_dir == FALSE || g_str_has_suffix (filename, "/"))
- path = g_build_path ("/", uri->path, filename, NULL);
- else
- path = g_build_path ("/", uri->path, filename, "/", NULL);
-
- g_free (uri->path);
- uri->path = g_uri_escape_string (path, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH,
- FALSE);
- g_free (path);
-
- return uri;
-}
-
char *
http_uri_get_basename (const char *uri_str)
{
diff --git a/daemon/gvfsbackendhttp.h b/daemon/gvfsbackendhttp.h
index b83a1f6a..5cc4bd8f 100644
--- a/daemon/gvfsbackendhttp.h
+++ b/daemon/gvfsbackendhttp.h
@@ -57,11 +57,6 @@ struct _GVfsBackendHttp
GType g_vfs_backend_http_get_type (void) G_GNUC_CONST;
-SoupURI * http_backend_uri_for_filename (GVfsBackend *backend,
- const char *filename,
- gboolean is_dir);
-
-
char * http_uri_get_basename (const char *uri_str);
guint http_error_code_from_status (guint status);