[grilo-plugins] tracker: Add test_media_from_uri
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] tracker: Add test_media_from_uri
- Date: Fri, 8 Aug 2014 23:56:22 +0000 (UTC)
commit f60d9e7e24370686302f91c6f34f53cce1a57c41
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Mon Jul 28 12:24:41 2014 +0000
tracker: Add test_media_from_uri
Given an URL, tests if Tracker source can create a media out of it.
https://bugzilla.gnome.org/show_bug.cgi?id=678519
src/tracker/grl-tracker-source-api.c | 69 ++++++++++++++++++++++++++++++++++
src/tracker/grl-tracker-source-api.h | 3 +
src/tracker/grl-tracker-source.c | 2 +-
3 files changed, 73 insertions(+), 1 deletions(-)
---
diff --git a/src/tracker/grl-tracker-source-api.c b/src/tracker/grl-tracker-source-api.c
index ff863c0..47d9245 100644
--- a/src/tracker/grl-tracker-source-api.c
+++ b/src/tracker/grl-tracker-source-api.c
@@ -159,6 +159,26 @@ GRL_LOG_DOMAIN_STATIC(tracker_source_result_log_domain);
"DELETE { <%s> %s } WHERE { <%s> a nfo:Media . %s } " \
"INSERT { <%s> a nfo:Media ; %s . }"
+#define TRACKER_TEST_MEDIA_FROM_URI_REQUEST \
+ "SELECT ?urn " \
+ "WHERE " \
+ "{ " \
+ "?urn nie:url \"%s\" ; " \
+ "tracker:available true ; " \
+ "a nfo:Media . " \
+ "%s " \
+ "}"
+
+#define TRACKER_TEST_MEDIA_FROM_URI_REQUEST_WITH_DOCUMENTS \
+ "SELECT ?urn " \
+ "WHERE " \
+ "{ " \
+ "?urn nie:url \"%s\" ; " \
+ "tracker:available true . " \
+ "%s " \
+ "FILTER (?type IN ( nfo:Media, nfo:Document ))" \
+ "}"
+
/**/
/**/
@@ -1110,3 +1130,52 @@ grl_tracker_source_get_caps (GrlSource *source,
return caps;
}
+
+gboolean
+grl_tracker_source_test_media_from_uri (GrlSource *source,
+ const gchar *uri)
+{
+ GrlTrackerSourcePriv *priv = GRL_TRACKER_SOURCE_GET_PRIVATE (source);
+ GError *error = NULL;
+ TrackerSparqlCursor *cursor;
+ gboolean empty;
+ gchar *constraint;
+ gchar *sparql_final;
+
+ constraint = grl_tracker_source_get_device_constraint (priv);
+ if (grl_tracker_show_documents) {
+ sparql_final = g_strdup_printf (TRACKER_TEST_MEDIA_FROM_URI_REQUEST_WITH_DOCUMENTS,
+ uri,
+ constraint);
+ } else {
+ sparql_final = g_strdup_printf (TRACKER_TEST_MEDIA_FROM_URI_REQUEST,
+ uri,
+ constraint);
+ }
+
+ cursor = tracker_sparql_connection_query (grl_tracker_connection,
+ sparql_final,
+ NULL,
+ &error);
+ g_free (constraint);
+ g_free (sparql_final);
+
+ if (error) {
+ GRL_WARNING ("Error when executig sparql query: %s",
+ error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ /* Check if there are results */
+ if (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
+ empty = FALSE;
+ } else {
+ empty = TRUE;
+ }
+
+ g_object_unref (cursor);
+
+ return !empty;
+}
+
diff --git a/src/tracker/grl-tracker-source-api.h b/src/tracker/grl-tracker-source-api.h
index 7e7f9a6..7814344 100644
--- a/src/tracker/grl-tracker-source-api.h
+++ b/src/tracker/grl-tracker-source-api.h
@@ -66,4 +66,7 @@ gboolean grl_tracker_source_change_stop (GrlSource *source,
GrlCaps *grl_tracker_source_get_caps (GrlSource *source,
GrlSupportedOps operation);
+gboolean grl_tracker_source_test_media_from_uri (GrlSource *source,
+ const gchar *uri);
+
#endif /* _GRL_TRACKER_SOURCE_API_H_ */
diff --git a/src/tracker/grl-tracker-source.c b/src/tracker/grl-tracker-source.c
index bf06e30..686ac14 100644
--- a/src/tracker/grl-tracker-source.c
+++ b/src/tracker/grl-tracker-source.c
@@ -111,7 +111,7 @@ grl_tracker_source_class_init (GrlTrackerSourceClass * klass)
source_class->notify_change_start = grl_tracker_source_change_start;
source_class->notify_change_stop = grl_tracker_source_change_stop;
source_class->get_caps = grl_tracker_source_get_caps;
-
+ source_class->test_media_from_uri = grl_tracker_source_test_media_from_uri;
g_object_class_install_property (g_class,
PROP_TRACKER_CONNECTION,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]