[gnome-games/wip/aplazas/run-uri: 2/4] core: Add GenericMimeTypeUriTest



commit dd0ae391f45b6623635178854141dc1a25e18f61
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Wed Apr 12 06:48:49 2017 +0200

    core: Add GenericMimeTypeUriTest
    
    This will be used in the next commits to test the MIME-type (if any) of
    URIs of potential games.

 src/Makefile.am                             |    1 +
 src/generic/generic-mime-type-uri-test.vala |   26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index eee5500..99345b9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -82,6 +82,7 @@ gnome_games_SOURCES = \
        gamepad/standard-gamepad-button.vala \
        \
        generic/generic-game.vala \
+       generic/generic-mime-type-uri-test.vala \
        generic/generic-sync-game-uri-adapter.vala \
        generic/generic-title.vala \
        generic/generic-uid.vala \
diff --git a/src/generic/generic-mime-type-uri-test.vala b/src/generic/generic-mime-type-uri-test.vala
new file mode 100644
index 0000000..fb115b3
--- /dev/null
+++ b/src/generic/generic-mime-type-uri-test.vala
@@ -0,0 +1,26 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+public class Games.GenericMimeTypeUriTest : UriTest, Object {
+       public delegate Game GameForUri (string uri) throws Error;
+
+       private string mime_type;
+
+       public GenericMimeTypeUriTest (string mime_type) {
+               this.mime_type = mime_type;
+       }
+
+       public bool is_uri_valid (string uri) {
+               var file = File.new_for_uri (uri);
+               try {
+                       var info = file.query_info ("standard::content-type", FileQueryInfoFlags.NONE);
+                       var actual_type = info.get_content_type ();
+
+                       return ContentType.is_a (actual_type, mime_type);
+               }
+               catch (Error e) {
+                       debug (e.message);
+
+                       return false;
+               }
+       }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]