summaryrefslogtreecommitdiff
path: root/libsoup/soup-request-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsoup/soup-request-file.c')
-rw-r--r--libsoup/soup-request-file.c65
1 files changed, 39 insertions, 26 deletions
diff --git a/libsoup/soup-request-file.c b/libsoup/soup-request-file.c
index cdd5d673..740b52a9 100644
--- a/libsoup/soup-request-file.c
+++ b/libsoup/soup-request-file.c
@@ -39,30 +39,35 @@
* URIs.
*/
-struct _SoupRequestFilePrivate {
+struct _SoupRequestFile {
+ SoupRequest parent;
+};
+
+typedef struct {
GFile *gfile;
char *mime_type;
goffset size;
-};
+} SoupRequestFilePrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SoupRequestFile, soup_request_file, SOUP_TYPE_REQUEST)
static void
soup_request_file_init (SoupRequestFile *file)
{
- file->priv = soup_request_file_get_instance_private (file);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- file->priv->size = -1;
+ priv->size = -1;
}
static void
soup_request_file_finalize (GObject *object)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (object);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- g_clear_object (&file->priv->gfile);
- g_free (file->priv->mime_type);
+ g_clear_object (&priv->gfile);
+ g_free (priv->mime_type);
G_OBJECT_CLASS (soup_request_file_parent_class)->finalize (object);
}
@@ -121,10 +126,11 @@ soup_request_file_ensure_file (SoupRequestFile *file,
GCancellable *cancellable,
GError **error)
{
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
SoupURI *uri;
char *decoded_path;
- if (file->priv->gfile)
+ if (priv->gfile)
return TRUE;
uri = soup_request_get_uri (SOUP_REQUEST (file));
@@ -138,10 +144,10 @@ soup_request_file_ensure_file (SoupRequestFile *file,
char *uri_str;
uri_str = g_strdup_printf ("resource://%s", decoded_path);
- file->priv->gfile = g_file_new_for_uri (uri_str);
+ priv->gfile = g_file_new_for_uri (uri_str);
g_free (uri_str);
} else
- file->priv->gfile = g_file_new_for_path (decoded_path);
+ priv->gfile = g_file_new_for_path (decoded_path);
g_free (decoded_path);
return TRUE;
@@ -153,19 +159,20 @@ soup_request_file_send (SoupRequest *request,
GError **error)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream;
GError *my_error = NULL;
if (!soup_request_file_ensure_file (file, cancellable, error))
return NULL;
- stream = G_INPUT_STREAM (g_file_read (file->priv->gfile,
+ stream = G_INPUT_STREAM (g_file_read (priv->gfile,
cancellable, &my_error));
if (stream == NULL) {
if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY)) {
GFileEnumerator *enumerator;
g_clear_error (&my_error);
- enumerator = g_file_enumerate_children (file->priv->gfile,
+ enumerator = g_file_enumerate_children (priv->gfile,
"*",
G_FILE_QUERY_INFO_NONE,
cancellable,
@@ -174,22 +181,22 @@ soup_request_file_send (SoupRequest *request,
stream = soup_directory_input_stream_new (enumerator,
soup_request_get_uri (request));
g_object_unref (enumerator);
- file->priv->mime_type = g_strdup ("text/html");
+ priv->mime_type = g_strdup ("text/html");
}
} else
g_propagate_error (error, my_error);
} else {
- GFileInfo *info = g_file_query_info (file->priv->gfile,
+ GFileInfo *info = g_file_query_info (priv->gfile,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_SIZE,
0, cancellable, NULL);
if (info) {
const char *content_type;
- file->priv->size = g_file_info_get_size (info);
+ priv->size = g_file_info_get_size (info);
content_type = g_file_info_get_content_type (info);
if (content_type)
- file->priv->mime_type = g_content_type_get_mime_type (content_type);
+ priv->mime_type = g_content_type_get_mime_type (content_type);
g_object_unref (info);
}
}
@@ -204,6 +211,7 @@ on_enumerate_children_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GFileEnumerator *enumerator;
GError *error = NULL;
@@ -216,7 +224,7 @@ on_enumerate_children_ready (GObject *source,
stream = soup_directory_input_stream_new (enumerator,
soup_request_get_uri (SOUP_REQUEST (file)));
g_object_unref (enumerator);
- file->priv->mime_type = g_strdup ("text/html");
+ priv->mime_type = g_strdup ("text/html");
g_task_return_pointer (task, stream, g_object_unref);
}
@@ -231,6 +239,7 @@ on_query_info_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream = G_INPUT_STREAM (g_task_get_task_data (task));
GFileInfo *info;
GError *error = NULL;
@@ -239,11 +248,11 @@ on_query_info_ready (GObject *source,
if (info) {
const char *content_type;
- file->priv->size = g_file_info_get_size (info);
+ priv->size = g_file_info_get_size (info);
content_type = g_file_info_get_content_type (info);
if (content_type)
- file->priv->mime_type = g_content_type_get_mime_type (content_type);
+ priv->mime_type = g_content_type_get_mime_type (content_type);
g_object_unref (info);
}
@@ -258,13 +267,14 @@ on_read_file_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream;
GError *error = NULL;
stream = G_INPUT_STREAM (g_file_read_finish (G_FILE (source), result, &error));
if (stream == NULL) {
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY)) {
- g_file_enumerate_children_async (file->priv->gfile,
+ g_file_enumerate_children_async (priv->gfile,
"*",
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
@@ -278,7 +288,7 @@ on_read_file_ready (GObject *source,
}
} else {
g_task_set_task_data (task, stream, g_object_unref);
- g_file_query_info_async (file->priv->gfile,
+ g_file_query_info_async (priv->gfile,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_SIZE,
0,
@@ -296,6 +306,7 @@ soup_request_file_send_async (SoupRequest *request,
gpointer user_data)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GTask *task;
GError *error = NULL;
@@ -307,7 +318,7 @@ soup_request_file_send_async (SoupRequest *request,
return;
}
- g_file_read_async (file->priv->gfile,
+ g_file_read_async (priv->gfile,
G_PRIORITY_DEFAULT,
cancellable,
on_read_file_ready,
@@ -328,19 +339,20 @@ static goffset
soup_request_file_get_content_length (SoupRequest *request)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
-
- return file->priv->size;
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
+ return priv->size;
}
static const char *
soup_request_file_get_content_type (SoupRequest *request)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- if (!file->priv->mime_type)
+ if (!priv->mime_type)
return "application/octet-stream";
- return file->priv->mime_type;
+ return priv->mime_type;
}
static const char *file_schemes[] = { "file", "resource", NULL };
@@ -377,5 +389,6 @@ soup_request_file_class_init (SoupRequestFileClass *request_file_class)
GFile *
soup_request_file_get_file (SoupRequestFile *file)
{
- return g_object_ref (file->priv->gfile);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
+ return g_object_ref (priv->gfile);
}