Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba3c2e3489 | ||
|
|
92a2cc2d9a | ||
|
|
0842739197 | ||
|
|
f09a66c083 |
+6
-5
@@ -76,21 +76,22 @@ class Blink:
|
|||||||
self.no_owls = no_owls
|
self.no_owls = no_owls
|
||||||
|
|
||||||
@util.Throttle(seconds=MIN_THROTTLE_TIME)
|
@util.Throttle(seconds=MIN_THROTTLE_TIME)
|
||||||
def refresh(self, force=False):
|
def refresh(self, force=False, force_cache=False):
|
||||||
"""
|
"""
|
||||||
Perform a system refresh.
|
Perform a system refresh.
|
||||||
|
|
||||||
:param force: Force an update of the camera data
|
:param force: Used to override throttle, resets refresh
|
||||||
|
:param force_cache: Used to force update without overriding throttle
|
||||||
"""
|
"""
|
||||||
if self.check_if_ok_to_update() or force:
|
if self.check_if_ok_to_update() or force or force_cache:
|
||||||
if not self.available:
|
if not self.available:
|
||||||
self.setup_post_verify()
|
self.setup_post_verify()
|
||||||
|
|
||||||
self.get_homescreen()
|
self.get_homescreen()
|
||||||
for sync_name, sync_module in self.sync.items():
|
for sync_name, sync_module in self.sync.items():
|
||||||
_LOGGER.debug("Attempting refresh of sync %s", sync_name)
|
_LOGGER.debug("Attempting refresh of sync %s", sync_name)
|
||||||
sync_module.refresh(force_cache=force)
|
sync_module.refresh(force_cache=(force or force_cache))
|
||||||
if not force:
|
if not force_cache:
|
||||||
# Prevents rapid clearing of motion detect property
|
# Prevents rapid clearing of motion detect property
|
||||||
self.last_refresh = int(time.time())
|
self.last_refresh = int(time.time())
|
||||||
return True
|
return True
|
||||||
|
|||||||
+1
-1
@@ -266,6 +266,6 @@ class BlinkCameraMini(BlinkCamera):
|
|||||||
response = api.http_post(self.sync.blink, url)
|
response = api.http_post(self.sync.blink, url)
|
||||||
server = response["server"]
|
server = response["server"]
|
||||||
server_split = server.split(":")
|
server_split = server.split(":")
|
||||||
server_split[0] = "rtsps"
|
server_split[0] = "rtsps:"
|
||||||
link = "".join(server_split)
|
link = "".join(server_split)
|
||||||
return link
|
return link
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
MAJOR_VERSION = 0
|
MAJOR_VERSION = 0
|
||||||
MINOR_VERSION = 16
|
MINOR_VERSION = 17
|
||||||
PATCH_VERSION = "4-rc0"
|
PATCH_VERSION = "0.dev1"
|
||||||
|
|
||||||
__version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}"
|
__version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}.{PATCH_VERSION}"
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ class BlinkSyncModule:
|
|||||||
for owl in self.blink.homescreen["owls"]:
|
for owl in self.blink.homescreen["owls"]:
|
||||||
if owl["name"] == name:
|
if owl["name"] == name:
|
||||||
return owl
|
return owl
|
||||||
except KeyError:
|
except (TypeError, KeyError):
|
||||||
pass
|
pass
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ class BlinkOwl(BlinkSyncModule):
|
|||||||
if owl["name"] == self.name:
|
if owl["name"] == self.name:
|
||||||
self.status = owl["enabled"]
|
self.status = owl["enabled"]
|
||||||
return owl
|
return owl
|
||||||
except KeyError:
|
except (TypeError, KeyError):
|
||||||
pass
|
pass
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
@@ -5,29 +5,23 @@ import logging
|
|||||||
|
|
||||||
from blinkpy import blinkpy
|
from blinkpy import blinkpy
|
||||||
from blinkpy.sync_module import BlinkSyncModule
|
from blinkpy.sync_module import BlinkSyncModule
|
||||||
|
from blinkpy.camera import BlinkCamera
|
||||||
from blinkpy.helpers.util import get_time, BlinkURLHandler
|
from blinkpy.helpers.util import get_time, BlinkURLHandler
|
||||||
|
|
||||||
|
|
||||||
class MockSyncModule(BlinkSyncModule):
|
class MockSyncModule(BlinkSyncModule):
|
||||||
"""Mock http requests from sync module."""
|
"""Mock blink sync module object."""
|
||||||
|
|
||||||
def __init__(self, blink, header):
|
def get_network_info(self):
|
||||||
"""Create mock sync module instance."""
|
"""Mock network info method."""
|
||||||
super().__init__(blink, header, network_id=None, camera_list=None)
|
return True
|
||||||
self.blink = blink
|
|
||||||
self.header = header
|
|
||||||
self.return_value = None
|
|
||||||
self.return_value2 = None
|
|
||||||
|
|
||||||
def http_get(self, url, stream=False, json=True):
|
|
||||||
"""Mock get request."""
|
|
||||||
if stream and self.return_value2 is not None:
|
|
||||||
return self.return_value2
|
|
||||||
return self.return_value
|
|
||||||
|
|
||||||
def http_post(self, url):
|
class MockCamera(BlinkCamera):
|
||||||
"""Mock post request."""
|
"""Mock blink camera object."""
|
||||||
return self.return_value
|
|
||||||
|
def update(self, config, force_cache=False, **kwargs):
|
||||||
|
"""Mock camera update method."""
|
||||||
|
|
||||||
|
|
||||||
class TestBlinkFunctions(unittest.TestCase):
|
class TestBlinkFunctions(unittest.TestCase):
|
||||||
@@ -121,3 +115,16 @@ class TestBlinkFunctions(unittest.TestCase):
|
|||||||
with self.assertLogs() as dl_log:
|
with self.assertLogs() as dl_log:
|
||||||
blink.download_videos("/tmp", camera="bar", stop=2)
|
blink.download_videos("/tmp", camera="bar", stop=2)
|
||||||
self.assertEqual(dl_log.output, expected_log)
|
self.assertEqual(dl_log.output, expected_log)
|
||||||
|
|
||||||
|
@mock.patch("blinkpy.blinkpy.api.request_network_update")
|
||||||
|
@mock.patch("blinkpy.auth.Auth.query")
|
||||||
|
def test_refresh(self, mock_req, mock_update):
|
||||||
|
"""Test ability to refresh system."""
|
||||||
|
mock_update.return_value = {"network": {"sync_module_error": False}}
|
||||||
|
mock_req.return_value = None
|
||||||
|
self.blink.last_refresh = 0
|
||||||
|
self.blink.available = True
|
||||||
|
self.blink.sync["foo"] = MockSyncModule(self.blink, "foo", 1, [])
|
||||||
|
self.blink.cameras = {"bar": MockCamera(self.blink.sync)}
|
||||||
|
self.blink.sync["foo"].cameras = self.blink.cameras
|
||||||
|
self.assertTrue(self.blink.refresh())
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class TestBlinkSetup(unittest.TestCase):
|
|||||||
with mock.patch(
|
with mock.patch(
|
||||||
"blinkpy.sync_module.BlinkSyncModule.refresh", return_value=True
|
"blinkpy.sync_module.BlinkSyncModule.refresh", return_value=True
|
||||||
), mock.patch("blinkpy.blinkpy.Blink.get_homescreen", return_value=True):
|
), mock.patch("blinkpy.blinkpy.Blink.get_homescreen", return_value=True):
|
||||||
self.blink.refresh()
|
self.blink.refresh(force=True)
|
||||||
|
|
||||||
self.assertEqual(self.blink.last_refresh, now)
|
self.assertEqual(self.blink.last_refresh, now)
|
||||||
self.assertEqual(self.blink.check_if_ok_to_update(), False)
|
self.assertEqual(self.blink.check_if_ok_to_update(), False)
|
||||||
|
|||||||
@@ -176,3 +176,10 @@ class TestBlinkCameraSetup(unittest.TestCase):
|
|||||||
attr = camera.attributes
|
attr = camera.attributes
|
||||||
for key in attr:
|
for key in attr:
|
||||||
self.assertEqual(attr[key], None)
|
self.assertEqual(attr[key], None)
|
||||||
|
|
||||||
|
def test_camera_stream(self, mock_resp):
|
||||||
|
"""Test that camera stream returns correct url."""
|
||||||
|
mock_resp.return_value = {"server": "rtsps://foo.bar"}
|
||||||
|
mini_camera = BlinkCameraMini(self.blink.sync["test"])
|
||||||
|
self.assertEqual(self.camera.get_liveview(), "rtsps://foo.bar")
|
||||||
|
self.assertEqual(mini_camera.get_liveview(), "rtsps://foo.bar")
|
||||||
|
|||||||
Reference in New Issue
Block a user