From dd61f9978510c9277bd53857f3a265b63c3cb961 Mon Sep 17 00:00:00 2001
From: Sebastian Goscik <sebastian.goscik@live.co.uk>
Date: Tue, 19 Jul 2016 16:14:19 +0100
Subject: [PATCH] revent: Updated resource getters to check if a file is
 actually a recording

---
 wlauto/resource_getters/standard.py | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/wlauto/resource_getters/standard.py b/wlauto/resource_getters/standard.py
index 1aedcb77..7d9c22a9 100644
--- a/wlauto/resource_getters/standard.py
+++ b/wlauto/resource_getters/standard.py
@@ -33,6 +33,7 @@ from wlauto.exceptions import ResourceError
 from wlauto.utils.android import ApkInfo
 from wlauto.utils.misc import ensure_directory_exists as _d, ensure_file_directory_exists as _f, sha256, urljoin
 from wlauto.utils.types import boolean
+from wlauto.utils.revent import ReventParser
 
 
 logging.getLogger("requests").setLevel(logging.WARNING)
@@ -98,7 +99,12 @@ class ReventGetter(ResourceGetter):
             location = _d(os.path.join(self.get_base_location(resource), 'revent_files'))
             for candidate in os.listdir(location):
                 if candidate.lower() == filename.lower():
-                    return os.path.join(location, candidate)
+                    path = os.path.join(location, candidate)
+                    try:
+                        ReventParser.check_revent_file(path)
+                        return path
+                    except ValueError as e:
+                        self.logger.warning(e.message)
 
 
 class PackageApkGetter(PackageFileGetter):
@@ -430,7 +436,11 @@ class HttpGetter(ResourceGetter):
                 for asset in assets:
                     pathname = os.path.basename(asset['path']).lower()
                     if pathname == filename:
-                        return asset
+                        try:
+                            ReventParser.check_revent_file(asset['path'])
+                            return asset
+                        except ValueError as e:
+                            self.logger.warning(e.message)
         else:  # file
             for asset in assets:
                 if asset['path'].lower() == resource.path.lower():
@@ -514,14 +524,22 @@ class RemoteFilerGetter(ResourceGetter):
                 # There tends to be some confusion as to where revent files should
                 # be placed. This looks both in the extension's directory, and in
                 # 'revent_files' subdirectory under it, if it exists.
+                path = None
                 if os.path.isdir(alternate_location):
                     for candidate in os.listdir(alternate_location):
                         if candidate.lower() == filename.lower():
-                            return os.path.join(alternate_location, candidate)
+                            path = os.path.join(alternate_location, candidate)
                 if os.path.isdir(location):
                     for candidate in os.listdir(location):
                         if candidate.lower() == filename.lower():
-                            return os.path.join(location, candidate)
+                            path = os.path.join(location, candidate)
+                if path:
+                    try:
+                        ReventParser.check_revent_file(path)
+                        return path
+                    except ValueError as e:
+                        self.logger.warning(e.message)
+
         else:
             raise ValueError('Unexpected resource type: {}'.format(resource.name))