Skip to content

Commit f6eead4

Browse files
committed
MPT-12842 Add commerce requests
1 parent 4981fb8 commit f6eead4

File tree

10 files changed

+541
-305
lines changed

10 files changed

+541
-305
lines changed

mpt_api_client/http/__init__.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
from mpt_api_client.http.async_client import AsyncHTTPClient
22
from mpt_api_client.http.async_service import AsyncService
33
from mpt_api_client.http.client import HTTPClient
4-
from mpt_api_client.http.mixins import AsyncCreateMixin, AsyncDeleteMixin, CreateMixin, DeleteMixin
4+
from mpt_api_client.http.mixins import (
5+
AsyncCreateMixin,
6+
AsyncDeleteMixin,
7+
AsyncUpdateMixin,
8+
CreateMixin,
9+
DeleteMixin,
10+
UpdateMixin,
11+
)
512
from mpt_api_client.http.service import Service
613

714
__all__ = [ # noqa: WPS410
815
"AsyncCreateMixin",
916
"AsyncDeleteMixin",
1017
"AsyncHTTPClient",
1118
"AsyncService",
19+
"AsyncUpdateMixin",
1220
"CreateMixin",
1321
"DeleteMixin",
1422
"HTTPClient",
1523
"Service",
24+
"UpdateMixin",
1625
]
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
import httpx
2+
3+
from mpt_api_client.models import ResourceData
4+
5+
6+
class ValidateMixin[BaseModel]:
7+
"""Validate mixin."""
8+
9+
def validate(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
10+
"""Switch order to validate state.
11+
12+
Args:
13+
resource_id: Order resource ID
14+
resource_data: Order data will be updated
15+
"""
16+
return self._resource_action(resource_id, "POST", "validate", json=resource_data) # type: ignore[attr-defined, no-any-return]
17+
18+
19+
class ProcessMixin[BaseModel]:
20+
"""Process mixin."""
21+
22+
def process(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
23+
"""Switch order to process state.
24+
25+
Args:
26+
resource_id: Order resource ID
27+
resource_data: Order data will be updated
28+
"""
29+
return self._resource_action(resource_id, "POST", "process", json=resource_data) # type: ignore[attr-defined, no-any-return]
30+
31+
32+
class QueryMixin[BaseModel]:
33+
"""Query mixin."""
34+
35+
def query(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
36+
"""Switch order to query state.
37+
38+
Args:
39+
resource_id: Order resource ID
40+
resource_data: Order data will be updated
41+
"""
42+
return self._resource_action(resource_id, "POST", "query", json=resource_data) # type: ignore[attr-defined, no-any-return]
43+
44+
45+
class CompleteMixin[BaseModel]:
46+
"""Complete mixin."""
47+
48+
def complete(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
49+
"""Switch order to complete state.
50+
51+
Args:
52+
resource_id: Order resource ID
53+
resource_data: Order data will be updated
54+
"""
55+
return self._resource_action(resource_id, "POST", "complete", json=resource_data) # type: ignore[attr-defined, no-any-return]
56+
57+
58+
class FailMixin[BaseModel]:
59+
"""Fail mixin."""
60+
61+
def fail(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
62+
"""Switch order to fail state.
63+
64+
Args:
65+
resource_id: Order resource ID
66+
resource_data: Order data will be updated
67+
"""
68+
return self._resource_action(resource_id, "POST", "fail", json=resource_data) # type: ignore[attr-defined, no-any-return]
69+
70+
71+
class TemplateMixin:
72+
"""Template mixin."""
73+
74+
def template(self, resource_id: str) -> str:
75+
"""Render order template.
76+
77+
Args:
78+
resource_id: Order resource ID
79+
80+
Returns:
81+
Order template text in markdown format.
82+
"""
83+
response: httpx.Response = self._resource_do_request(resource_id, "GET", "template") # type: ignore[attr-defined]
84+
return response.text
85+
86+
87+
class AsyncValidateMixin[BaseModel]:
88+
"""Async Validate Mixin."""
89+
90+
async def validate(
91+
self, resource_id: str, resource_data: ResourceData | None = None
92+
) -> BaseModel:
93+
"""Switch order to validate state.
94+
95+
Args:
96+
resource_id: Order resource ID
97+
resource_data: Order data will be updated
98+
99+
Returns:
100+
Updated order resource
101+
"""
102+
return await self._resource_action(resource_id, "POST", "validate", json=resource_data) # type: ignore[attr-defined, no-any-return]
103+
104+
105+
class AsyncProcessMixin[BaseModel]:
106+
"""Async Process Mixin."""
107+
108+
async def process(
109+
self, resource_id: str, resource_data: ResourceData | None = None
110+
) -> BaseModel:
111+
"""Switch order to process state.
112+
113+
Args:
114+
resource_id: Order resource ID
115+
resource_data: Order data will be updated
116+
117+
Returns:
118+
Updated order resource
119+
"""
120+
return await self._resource_action(resource_id, "POST", "process", json=resource_data) # type: ignore[attr-defined, no-any-return]
121+
122+
123+
class AsyncQueryMixin[BaseModel]:
124+
"""Async Query Mixin."""
125+
126+
async def query(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
127+
"""Switch order to query state.
128+
129+
Args:
130+
resource_id: Order resource ID
131+
resource_data: Order data will be updated
132+
133+
Returns:
134+
Updated order resource
135+
"""
136+
return await self._resource_action(resource_id, "POST", "query", json=resource_data) # type: ignore[attr-defined, no-any-return]
137+
138+
139+
class AsyncCompleteMixin[BaseModel]:
140+
"""Async Complete Mixin."""
141+
142+
async def complete(
143+
self, resource_id: str, resource_data: ResourceData | None = None
144+
) -> BaseModel:
145+
"""Switch order to complete state.
146+
147+
Args:
148+
resource_id: Order resource ID
149+
resource_data: Order data will be updated
150+
151+
Returns:
152+
Updated order resource
153+
"""
154+
return await self._resource_action(resource_id, "POST", "complete", json=resource_data) # type: ignore[attr-defined, no-any-return]
155+
156+
157+
class AsyncFailMixin[BaseModel]:
158+
"""Async Fail Mixin."""
159+
160+
async def fail(self, resource_id: str, resource_data: ResourceData | None = None) -> BaseModel:
161+
"""Switch order to fail state.
162+
163+
Args:
164+
resource_id: Order resource ID
165+
resource_data: Order data will be updated
166+
167+
Returns:
168+
Updated order resource
169+
"""
170+
return await self._resource_action(resource_id, "POST", "fail", json=resource_data) # type: ignore[attr-defined, no-any-return]
171+
172+
173+
class AsyncTemplateMixin:
174+
"""Async Template Mixin."""
175+
176+
async def template(self, resource_id: str) -> str:
177+
"""Render order template.
178+
179+
Args:
180+
resource_id: Order resource ID
181+
182+
Returns:
183+
Order template text in markdown format.
184+
"""
185+
response: httpx.Response = await self._resource_do_request(resource_id, "GET", "template") # type: ignore[attr-defined]
186+
return response.text

0 commit comments

Comments
 (0)