Make smart futures avoid polling.
[python_utils.git] / google_assistant.py
index b34197a3e60d0db9eff5c9cc6609ebe04e581bab..572b4ccdf25644992f77f66eae800ea9e306ce50 100644 (file)
@@ -2,6 +2,7 @@
 
 import logging
 from typing import NamedTuple
+import sys
 
 import requests
 import speech_recognition as sr  # type: ignore
@@ -94,13 +95,19 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
                     logger.exception(e)
                     logger.warning('Unable to parse Google assistant\'s response.')
                     audio_transcription = None
+        return GoogleResponse(
+            success=success,
+            response=response,
+            audio_url=audio,
+            audio_transcription=audio_transcription,
+        )
     else:
-        logger.error(
-            f'HTTP request to {url} with {payload} failed; code {r.status_code}'
+        message = f'HTTP request to {url} with {payload} failed; code {r.status_code}'
+        logger.error(message)
+        return GoogleResponse(
+            success=False,
+            response=message,
+            audio_url=audio,
+            audio_transcription=audio_transcription,
         )
-    return GoogleResponse(
-        success=success,
-        response=response,
-        audio_url=audio,
-        audio_transcription=audio_transcription,
-    )
+        sys.exit(-1)