Coverage for src/lanraragi_api/util/http.py: 82%
34 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-22 23:20 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-22 23:20 +0000
1from typing import Any
3HeaderType = dict[str, Any]
4ParamType = dict[str, Any]
7def merge_headers(
8 old_headers: HeaderType | None = None, new_headers: HeaderType | None = None
9) -> HeaderType:
10 """Merge the new headers into the old headers.
12 New headers wine over old headers of the same name.
14 Args:
15 old_headers: default headers. Defaults to None, which will be an empty dict.
16 new_headers: new headers. Defaults to None, which will be an empty dict.
18 Returns:
19 dict: Headers merged, defaults included.
20 """
21 if old_headers is None:
22 old_headers = {}
23 if new_headers is None:
24 new_headers = {}
25 merged: HeaderType = dict(new_headers)
26 for k in old_headers:
27 if k in merged:
28 continue
29 merged[k] = old_headers[k]
30 return merged
33def merge_params(
34 old_params: ParamType | None = None, new_params: ParamType | None = None
35) -> ParamType:
36 """Merge the new query parameters into the old query parameters.
38 New query parameters wine over old query parameters of the same name.
40 Args:
41 old_params: default query parameters. Defaults to None, which will be an empty dict.
42 new_params: new query parameters. Defaults to None, which will be an empty dict.
44 Returns:
45 dict: query parameters merged, defaults included.
46 """
47 if old_params is None:
48 old_params = {}
49 if new_params is None:
50 new_params = {}
51 merged: ParamType = dict(new_params)
52 for k in old_params:
53 if k in merged:
54 continue
55 merged[k] = old_params[k]
56 return merged
59def normalize_params(params: ParamType) -> ParamType:
60 """Normalize query parameters by overriding the default marshalling of some
61 types to fit the HTTP standard.
62 """
63 new_params: ParamType = {}
64 for k, v in params.items():
65 if v is None:
66 continue
67 if isinstance(v, bool):
68 # requests won't encoding bool value to lowercase string
69 v = "true" if v else "false"
70 new_params[k] = v
72 return new_params