Skip to content

Commit 2f0eb6e

Browse files
committed
Fix final_keys in handlers
1 parent fd4c6d4 commit 2f0eb6e

14 files changed

Lines changed: 50 additions & 65 deletions

mailgun/handlers/bounce_classification_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -14,7 +13,7 @@ def handle_bounce_classification(
1413
_domain: str | None,
1514
_method: str | None,
1615
**kwargs: Any,
17-
) -> Any:
16+
) -> str:
1817
"""Handle Bounce Classification.
1918
2019
:param url: Incoming URL dictionary
@@ -26,6 +25,6 @@ def handle_bounce_classification(
2625
:param kwargs: kwargs
2726
:return: final url for Bounce Classification endpoints
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029

3130
return url["base"][:-1] + final_keys

mailgun/handlers/default_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from __future__ import annotations
99

10-
from os import path
1110
from typing import Any
1211

1312
from .error_handler import ApiError
@@ -18,7 +17,7 @@ def handle_default(
1817
domain: str | None,
1918
_method: str | None,
2019
**_: Any,
21-
) -> Any:
20+
) -> str:
2221
"""Provide default handler for endpoints with single url pattern (events, messages, stats).
2322
2423
:param url: Incoming URL dictionary
@@ -34,5 +33,5 @@ def handle_default(
3433
if not domain:
3534
raise ApiError("Domain is missing!")
3635

37-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
36+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3837
return url["base"] + domain + final_keys

mailgun/handlers/domains_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def handle_domainlist(
1616
_domain: str | None,
1717
_method: str | None,
1818
**_: Any,
19-
) -> Any:
19+
) -> str:
2020
"""Handle a list of domains."""
2121
# Ensure base ends with slash before appending
2222
return url["base"].rstrip("/") + "/domains"

mailgun/handlers/inbox_placement_handler.py

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110
from .error_handler import ApiError
@@ -16,7 +15,7 @@ def handle_inbox(
1615
_domain: str | None,
1716
_method: str | None,
1817
**kwargs: Any,
19-
) -> Any:
18+
) -> str:
2019
"""Handle inbox placement.
2120
2221
:param url: Incoming URL dictionary
@@ -29,31 +28,26 @@ def handle_inbox(
2928
:return: final url for inbox placement endpoint
3029
:raises: ApiError
3130
"""
32-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
33-
if "test_id" in kwargs:
34-
if "counters" in kwargs:
35-
if kwargs["counters"]:
36-
url = url["base"][:-1] + final_keys + "/" + kwargs["test_id"] + "/counters"
37-
else:
38-
raise ApiError("Counters option should be True or absent")
39-
elif "checks" in kwargs:
40-
if kwargs["checks"]:
41-
if "address" in kwargs:
42-
url = (
43-
url["base"][:-1]
44-
+ final_keys
45-
+ "/"
46-
+ kwargs["test_id"]
47-
+ "/checks/"
48-
+ kwargs["address"]
49-
)
50-
else:
51-
url = url["base"][:-1] + final_keys + "/" + kwargs["test_id"] + "/checks"
52-
else:
53-
raise ApiError("Checks option should be True or absent")
54-
else:
55-
url = url["base"][:-1] + final_keys + "/" + kwargs["test_id"]
56-
else:
57-
url = url["base"][:-1] + final_keys
58-
59-
return url
31+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
32+
base_url = url["base"].rstrip("/")
33+
endpoint_url = f"{base_url}{final_keys}"
34+
35+
if "test_id" not in kwargs:
36+
return endpoint_url
37+
38+
test_id = kwargs["test_id"]
39+
endpoint_url = f"{endpoint_url}/{test_id}"
40+
41+
if "counters" in kwargs:
42+
if kwargs["counters"]:
43+
return f"{endpoint_url}/counters"
44+
raise ApiError("Counters option should be True or absent")
45+
46+
if "checks" in kwargs:
47+
if kwargs["checks"]:
48+
if "address" in kwargs:
49+
return f"{endpoint_url}/checks/{kwargs['address']}"
50+
return f"{endpoint_url}/checks"
51+
raise ApiError("Checks option should be True or absent")
52+
53+
return endpoint_url

mailgun/handlers/ip_pools_handler.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -26,7 +25,7 @@ def handle_ippools(
2625
:param kwargs: kwargs
2726
:return: final url for IP pools endpoint
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029
base_url = url["base"][:-1] + final_keys
3130

3231
if "pool_id" not in kwargs:

mailgun/handlers/ips_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -14,7 +13,7 @@ def handle_ips(
1413
_domain: str | None,
1514
_method: str | None,
1615
**kwargs: Any,
17-
) -> Any:
16+
) -> dict[str, Any]:
1817
"""Handle IPs.
1918
2019
:param url: Incoming URL dictionary
@@ -26,7 +25,7 @@ def handle_ips(
2625
:param kwargs: kwargs
2726
:return: final url for IPs endpoint
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029
if "ip" in kwargs:
3130
url = url["base"][:-1] + final_keys + "/" + kwargs["ip"]
3231
else:

mailgun/handlers/keys_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -14,7 +13,7 @@ def handle_keys(
1413
_domain: str | None,
1514
_method: str | None,
1615
**kwargs: Any,
17-
) -> Any:
16+
) -> dict[str, Any]:
1817
"""Handle Keys.
1918
2019
:param url: Incoming URL dictionary
@@ -26,7 +25,7 @@ def handle_keys(
2625
:param kwargs: kwargs
2726
:return: final url for Keys endpoint
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029
if "key_id" in kwargs:
3130
url = url["base"][:-1] + final_keys + "/" + kwargs["key_id"]
3231
else:

mailgun/handlers/mailinglists_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def handle_lists(
1414
_domain: str | None,
1515
_method: str | None,
1616
**kwargs: Any,
17-
) -> Any:
17+
) -> dict[str, Any]:
1818
"""Handle Mailing List.
1919
2020
:param url: Incoming URL dictionary
@@ -26,7 +26,7 @@ def handle_lists(
2626
:param kwargs: kwargs
2727
:return: final url for mailinglist endpoint
2828
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
29+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3030
if "validate" in kwargs:
3131
url = url["base"][:-1] + final_keys + "/" + kwargs["address"] + "/" + "validate"
3232
elif "multiple" in kwargs and "address" in kwargs:

mailgun/handlers/metrics_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -14,7 +13,7 @@ def handle_metrics(
1413
_domain: str | None,
1514
_method: str | None,
1615
**kwargs: Any,
17-
) -> Any:
16+
) -> dict[str, Any]:
1817
"""Handle Metrics and Tags New.
1918
2019
:param url: Incoming URL dictionary
@@ -26,7 +25,7 @@ def handle_metrics(
2625
:param kwargs: kwargs
2726
:return: final url for Metrics and Tags New endpoints
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029
if "usage" in kwargs:
3130
url = url["base"][:-1] + "/" + kwargs["usage"] + final_keys
3231
elif "limits" in kwargs and "tags" in kwargs:

mailgun/handlers/routes_handler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from __future__ import annotations
77

8-
from os import path
98
from typing import Any
109

1110

@@ -14,7 +13,7 @@ def handle_routes(
1413
_domain: str | None,
1514
_method: str | None,
1615
**kwargs: Any,
17-
) -> Any:
16+
) -> dict[str, Any]:
1817
"""Handle Routes.
1918
2019
:param url: Incoming URL dictionary
@@ -26,7 +25,7 @@ def handle_routes(
2625
:param kwargs: kwargs
2726
:return: final url for Routes endpoint
2827
"""
29-
final_keys = path.join("/", *url["keys"]) if url["keys"] else ""
28+
final_keys = "/" + "/".join(url["keys"]) if url["keys"] else ""
3029
if "route_id" in kwargs:
3130
url = url["base"][:-1] + final_keys + "/" + kwargs["route_id"]
3231
else:

0 commit comments

Comments
 (0)