diff --git a/rplugin/python3/mrpy/clickup.py b/rplugin/python3/mrpy/clickup.py index a1794d8..16de73b 100644 --- a/rplugin/python3/mrpy/clickup.py +++ b/rplugin/python3/mrpy/clickup.py @@ -3,6 +3,7 @@ from dataclasses import dataclass, field, fields from json import loads from os import environ from typing import Any, Callable, Self, TypedDict +from urllib.error import HTTPError from .hints import JSONDataMap from .requests import get, put @@ -124,15 +125,19 @@ class ClickupSession: base_url: str = "https://api.clickup.com/api/v2" def _get(self, endpoint: str, **query_params: str) -> JSONDataMap: - raw_data = get( - self.base_url + endpoint, - query_params, - headers={ - "accept": "application/json", - "Authorization": self.auth_key, - }, - ) - return loads(raw_data) + try: + raw_data = get( + self.base_url + endpoint, + query_params, + headers={ + "accept": "application/json", + "Authorization": self.auth_key, + }, + ) + return loads(raw_data) + except HTTPError as e: + e.add_note(e.url) + raise def _put(self, endpoint: str, **body_params: str) -> JSONDataMap: raw_data = put( diff --git a/rplugin/python3/mrpy/requests.py b/rplugin/python3/mrpy/requests.py index fda6efc..96ca37d 100644 --- a/rplugin/python3/mrpy/requests.py +++ b/rplugin/python3/mrpy/requests.py @@ -1,3 +1,4 @@ +from ssl import SSLContext, create_default_context from urllib.request import Request, urlopen @@ -8,12 +9,16 @@ def get( ) -> str: with urlopen( Request( - url + ("?" + "&".join(f"{k}={v}" for k, v in query_params.items())) - if query_params - else "", + url + + ( + ("?" + "&".join(f"{k}={v}" for k, v in query_params.items())) + if query_params + else "" + ), headers=headers or {}, method="GET", ), + context=create_default_context(), ) as resp: return resp.read().decode("utf-8") @@ -30,5 +35,6 @@ def put( headers=headers or {}, method="PUT", ), + context=create_default_context(), ) as resp: return resp.read().decode("utf-8") diff --git a/rplugin/python3/mrpy/yaml.py b/rplugin/python3/mrpy/yaml.py index 1d5148c..3853c30 100644 --- a/rplugin/python3/mrpy/yaml.py +++ b/rplugin/python3/mrpy/yaml.py @@ -14,7 +14,7 @@ def dump_scalar(entry: hints.JSONDataScalar) -> str: case False: return "false\n" case _: - return f"{entry:s}\n" + return f"{entry}\n" def dump(obj: dict[str, hints.JSONDataScalar | list[hints.JSONDataScalar]]) -> str: @@ -24,10 +24,13 @@ def dump(obj: dict[str, hints.JSONDataScalar | list[hints.JSONDataScalar]]) -> s ret += ":" match value: + case []: + ret += " []\n" case list() as entries: ret += "\n" for entry in entries: ret += f" - {dump_scalar(entry)}" + case entry: ret += f" {dump_scalar(entry)}"