feat: add debugger logging and flag (#5)

This commit is contained in:
Marc 2022-03-18 17:43:19 -04:00 committed by GitHub
parent 260abb4cdf
commit c24f08b511
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -26,13 +26,18 @@ import json
import pathlib import pathlib
import sys import sys
# Debug mode modifies the log level used for reporting. If truthy,
# extra information is included in each run to diagnose common
# issues.
DEBUG = bool(os.environ.get("DEBUG", False))
# Logger setup # Logger setup
logging.basicConfig() logging.basicConfig()
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.propagate = False logger.propagate = False
logger.setLevel(logging.INFO) logger.setLevel(logging.DEBUG if DEBUG else logging.INFO)
log_handler = logging.StreamHandler() log_handler = logging.StreamHandler()
log_handler.setLevel(level=logging.INFO) log_handler.setLevel(level=logging.DEBUG if DEBUG else logging.INFO)
log_handler.setFormatter(logging.Formatter(fmt="%(message)s")) log_handler.setFormatter(logging.Formatter(fmt="%(message)s"))
logger.addHandler(log_handler) logger.addHandler(log_handler)
@ -55,8 +60,6 @@ Configuration = collections.namedtuple(
defaults=[{}, Defaults()], defaults=[{}, Defaults()],
) )
API_URL = "https://slack.com/api/users.profile.set"
def update_status( def update_status(
token: str, token: str,
@ -79,7 +82,9 @@ def update_status(
"Authorization": f"Bearer {token}", "Authorization": f"Bearer {token}",
} }
request = urllib.request.Request( request = urllib.request.Request(
API_URL, urllib.parse.urlencode(payload).encode(), method="POST" "https://slack.com/api/users.profile.set",
urllib.parse.urlencode(payload).encode(),
method="POST",
) )
for header_key, header_value in headers.items(): for header_key, header_value in headers.items():
request.add_header(header_key, header_value) request.add_header(header_key, header_value)
@ -88,13 +93,16 @@ def update_status(
response_status = response.status response_status = response.status
response_data = response.read() response_data = response.read()
logger.debug("API request: %s", str(payload))
logger.debug("API response: %s", str(response_data))
if response_status != 200: if response_status != 200:
raise Exception("Failed to set status.") raise Exception("Failed to set status due to an API error.")
response_data = json.loads(response_data) response_data = json.loads(response_data)
if not response_data["ok"]: if not response_data["ok"]:
raise Exception("Failed to set status.") raise Exception("Failed to set status due to an API error.")
def parse_input(known_presets: typing.List[str]) -> ParsedUserInput: def parse_input(known_presets: typing.List[str]) -> ParsedUserInput:
@ -171,6 +179,8 @@ def load_configuration() -> Configuration:
try: try:
parsed_config = json.loads(config) parsed_config = json.loads(config)
logger.debug("Loaded configuration: %s", parsed_config)
preset_config = parsed_config.get("presets", {}) preset_config = parsed_config.get("presets", {})
defaults_config = parsed_config.get("defaults", {}) defaults_config = parsed_config.get("defaults", {})
@ -237,7 +247,7 @@ def run():
) )
logger.info("✨ Status set to '%s' %s", new_status, new_expiry) logger.info("✨ Status set to '%s' %s", new_status, new_expiry)
except Exception as e: except Exception as e:
logger.exception("Could not set status: %s", str(e)) logger.error("🔥 Could not set status: %s", str(e))
sys.exit(1) sys.exit(1)