Skip to content

Commit c37c192

Browse files
Merge pull request #2259 from VWS-Python/request-headers-type
Change request header type to be a mapping, not just dict
2 parents 068ddbe + c2daca3 commit c37c192

21 files changed

+65
-43
lines changed

src/mock_vws/_database_matchers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Helpers for getting databases which match keys given in requests.
33
"""
44

5-
from collections.abc import Iterable
5+
from collections.abc import Iterable, Mapping
66

77
from vws_auth_tools import authorization_header
88

@@ -11,7 +11,7 @@
1111

1212
def get_database_matching_client_keys(
1313
*,
14-
request_headers: dict[str, str],
14+
request_headers: Mapping[str, str],
1515
request_body: bytes | None,
1616
request_method: str,
1717
request_path: str,
@@ -56,7 +56,7 @@ def get_database_matching_client_keys(
5656

5757
def get_database_matching_server_keys(
5858
*,
59-
request_headers: dict[str, str],
59+
request_headers: Mapping[str, str],
6060
request_body: bytes | None,
6161
request_method: str,
6262
request_path: str,

src/mock_vws/_query_tools.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import base64
66
import io
77
import uuid
8+
from collections.abc import Mapping
89
from email.message import EmailMessage
910
from typing import Any
1011

@@ -20,7 +21,7 @@
2021

2122
def get_query_match_response_text(
2223
*,
23-
request_headers: dict[str, str],
24+
request_headers: Mapping[str, str],
2425
request_body: bytes,
2526
request_method: str,
2627
request_path: str,

src/mock_vws/_query_validators/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
Input validators to use in the mock query API.
33
"""
44

5+
from collections.abc import Mapping
6+
57
from mock_vws.database import VuforiaDatabase
68

79
from .accept_header_validators import validate_accept_header
@@ -39,7 +41,7 @@
3941
def run_query_validators(
4042
*,
4143
request_path: str,
42-
request_headers: dict[str, str],
44+
request_headers: Mapping[str, str],
4345
request_body: bytes,
4446
request_method: str,
4547
databases: set[VuforiaDatabase],

src/mock_vws/_query_validators/accept_header_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
"""
44

55
import logging
6+
from collections.abc import Mapping
67

78
from mock_vws._query_validators.exceptions import InvalidAcceptHeaderError
89

910
_LOGGER = logging.getLogger(name=__name__)
1011

1112

12-
def validate_accept_header(request_headers: dict[str, str]) -> None:
13+
def validate_accept_header(request_headers: Mapping[str, str]) -> None:
1314
"""
1415
Validate the accept header.
1516

src/mock_vws/_query_validators/auth_validators.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import logging
6+
from collections.abc import Mapping
67

78
from mock_vws._database_matchers import get_database_matching_client_keys
89
from mock_vws._query_validators.exceptions import (
@@ -15,7 +16,7 @@
1516
_LOGGER = logging.getLogger(name=__name__)
1617

1718

18-
def validate_auth_header_exists(*, request_headers: dict[str, str]) -> None:
19+
def validate_auth_header_exists(*, request_headers: Mapping[str, str]) -> None:
1920
"""
2021
Validate that there is an authorization header given to the query endpoint.
2122
@@ -34,7 +35,7 @@ def validate_auth_header_exists(*, request_headers: dict[str, str]) -> None:
3435

3536
def validate_auth_header_number_of_parts(
3637
*,
37-
request_headers: dict[str, str],
38+
request_headers: Mapping[str, str],
3839
) -> None:
3940
"""
4041
Validate the authorization header includes text either side of a space.
@@ -58,7 +59,7 @@ def validate_auth_header_number_of_parts(
5859

5960
def validate_client_key_exists(
6061
*,
61-
request_headers: dict[str, str],
62+
request_headers: Mapping[str, str],
6263
databases: set[VuforiaDatabase],
6364
) -> None:
6465
"""
@@ -83,7 +84,7 @@ def validate_client_key_exists(
8384

8485

8586
def validate_auth_header_has_signature(
86-
request_headers: dict[str, str],
87+
request_headers: Mapping[str, str],
8788
) -> None:
8889
"""
8990
Validate the authorization header includes a signature.
@@ -105,7 +106,7 @@ def validate_auth_header_has_signature(
105106
def validate_authorization(
106107
*,
107108
request_path: str,
108-
request_headers: dict[str, str],
109+
request_headers: Mapping[str, str],
109110
request_body: bytes,
110111
request_method: str,
111112
databases: set[VuforiaDatabase],

src/mock_vws/_query_validators/content_length_validators.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import logging
6+
from collections.abc import Mapping
67

78
from mock_vws._query_validators.exceptions import (
89
AuthenticationFailureGoodFormattingError,
@@ -15,7 +16,7 @@
1516

1617
def validate_content_length_header_is_int(
1718
*,
18-
request_headers: dict[str, str],
19+
request_headers: Mapping[str, str],
1920
) -> None:
2021
"""
2122
Validate the ``Content-Length`` header is an integer.
@@ -38,7 +39,7 @@ def validate_content_length_header_is_int(
3839

3940
def validate_content_length_header_not_too_large(
4041
*,
41-
request_headers: dict[str, str],
42+
request_headers: Mapping[str, str],
4243
request_body: bytes,
4344
) -> None:
4445
"""
@@ -64,7 +65,7 @@ def validate_content_length_header_not_too_large(
6465

6566
def validate_content_length_header_not_too_small(
6667
*,
67-
request_headers: dict[str, str],
68+
request_headers: Mapping[str, str],
6869
request_body: bytes,
6970
) -> None:
7071
"""

src/mock_vws/_query_validators/content_type_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import logging
6+
from collections.abc import Mapping
67
from email.message import EmailMessage
78

89
from mock_vws._query_validators.exceptions import (
@@ -16,7 +17,7 @@
1617

1718

1819
def validate_content_type_header(
19-
request_headers: dict[str, str],
20+
request_headers: Mapping[str, str],
2021
request_body: bytes,
2122
) -> None:
2223
"""

src/mock_vws/_query_validators/date_validators.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import contextlib
66
import datetime
77
import logging
8+
from collections.abc import Mapping
89
from zoneinfo import ZoneInfo
910

1011
from mock_vws._query_validators.exceptions import (
@@ -16,7 +17,7 @@
1617
_LOGGER = logging.getLogger(name=__name__)
1718

1819

19-
def validate_date_header_given(*, request_headers: dict[str, str]) -> None:
20+
def validate_date_header_given(*, request_headers: Mapping[str, str]) -> None:
2021
"""
2122
Validate the date header is given to the query endpoint.
2223
@@ -52,7 +53,7 @@ def _accepted_date_formats() -> set[str]:
5253
)
5354

5455

55-
def validate_date_format(*, request_headers: dict[str, str]) -> None:
56+
def validate_date_format(*, request_headers: Mapping[str, str]) -> None:
5657
"""
5758
Validate the format of the date header given to the query endpoint.
5859
@@ -73,7 +74,7 @@ def validate_date_format(*, request_headers: dict[str, str]) -> None:
7374
raise DateFormatNotValidError
7475

7576

76-
def validate_date_in_range(*, request_headers: dict[str, str]) -> None:
77+
def validate_date_in_range(*, request_headers: Mapping[str, str]) -> None:
7778
"""
7879
Validate date in the date header given to the query endpoint.
7980

src/mock_vws/_query_validators/fields_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import io
66
import logging
7+
from collections.abc import Mapping
78
from email.message import EmailMessage
89

910
from werkzeug.formparser import MultiPartParser
@@ -15,7 +16,7 @@
1516

1617
def validate_extra_fields(
1718
*,
18-
request_headers: dict[str, str],
19+
request_headers: Mapping[str, str],
1920
request_body: bytes,
2021
) -> None:
2122
"""

src/mock_vws/_query_validators/image_validators.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import io
66
import logging
7+
from collections.abc import Mapping
78
from email.message import EmailMessage
89

910
from PIL import Image
@@ -20,7 +21,7 @@
2021

2122
def validate_image_field_given(
2223
*,
23-
request_headers: dict[str, str],
24+
request_headers: Mapping[str, str],
2425
request_body: bytes,
2526
) -> None:
2627
"""
@@ -51,7 +52,7 @@ def validate_image_field_given(
5152

5253
def validate_image_file_size(
5354
*,
54-
request_headers: dict[str, str],
55+
request_headers: Mapping[str, str],
5556
request_body: bytes,
5657
) -> None:
5758
"""
@@ -91,7 +92,7 @@ def validate_image_file_size(
9192

9293
def validate_image_dimensions(
9394
*,
94-
request_headers: dict[str, str],
95+
request_headers: Mapping[str, str],
9596
request_body: bytes,
9697
) -> None:
9798
"""
@@ -129,7 +130,7 @@ def validate_image_dimensions(
129130

130131
def validate_image_format(
131132
*,
132-
request_headers: dict[str, str],
133+
request_headers: Mapping[str, str],
133134
request_body: bytes,
134135
) -> None:
135136
"""
@@ -162,7 +163,7 @@ def validate_image_format(
162163

163164

164165
def validate_image_is_image(
165-
request_headers: dict[str, str],
166+
request_headers: Mapping[str, str],
166167
request_body: bytes,
167168
) -> None:
168169
"""

0 commit comments

Comments
 (0)