maleo-foundation 0.2.29__py3-none-any.whl → 0.2.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,9 +5,11 @@ from maleo_foundation.managers.client.base import (
5
5
  ClientControllerManagers,
6
6
  ClientHTTPController,
7
7
  ClientServiceControllers,
8
+ ClientService,
8
9
  ClientControllers
9
10
  )
10
11
  from maleo_foundation.managers.service import ServiceManager
12
+ from maleo_foundation.utils.logging import ClientLogger
11
13
 
12
14
  class MaleoClientHTTPController(ClientHTTPController):
13
15
  def __init__(
@@ -15,8 +17,8 @@ class MaleoClientHTTPController(ClientHTTPController):
15
17
  service_manager:ServiceManager,
16
18
  manager:ClientHTTPControllerManager
17
19
  ):
18
- self._service_manager = service_manager
19
20
  super().__init__(manager)
21
+ self._service_manager = service_manager
20
22
 
21
23
  @property
22
24
  def service_manager(self) -> ServiceManager:
@@ -28,6 +30,19 @@ class MaleoClientServiceControllers(ClientServiceControllers):
28
30
  class Config:
29
31
  arbitrary_types_allowed=True
30
32
 
33
+ class MaleoClientService(ClientService):
34
+ def __init__(
35
+ self,
36
+ logger:ClientLogger,
37
+ service_manager:ServiceManager
38
+ ):
39
+ super().__init__(logger)
40
+ self._service_manager = service_manager
41
+
42
+ @property
43
+ def service_manager(self) -> ServiceManager:
44
+ return self._service_manager
45
+
31
46
  class MaleoClientManager(ClientManager):
32
47
  def __init__(
33
48
  self,
@@ -0,0 +1,61 @@
1
+ import asyncio
2
+ from functools import wraps
3
+ from pydantic import ValidationError
4
+ from typing import Optional, Type, Union
5
+ from maleo_foundation.types import BaseTypes
6
+ from maleo_foundation.models.transfers.results.client.service import \
7
+ BaseClientServiceResultsTransfers
8
+
9
+ class BaseClientUtils:
10
+ @staticmethod
11
+ def result_processor(
12
+ fail_class:Type[BaseClientServiceResultsTransfers.Fail],
13
+ data_found_class:Union[
14
+ Type[BaseClientServiceResultsTransfers.SingleData],
15
+ Type[BaseClientServiceResultsTransfers.UnpaginatedMultipleData],
16
+ Type[BaseClientServiceResultsTransfers.PaginatedMultipleData]
17
+ ],
18
+ no_data_class:Optional[Type[BaseClientServiceResultsTransfers.NoData]] = None,
19
+ ):
20
+ """Decorator to handle repository-related exceptions consistently."""
21
+ def decorator(func):
22
+ def _processor(result:BaseTypes.StringToAnyDict):
23
+ if "success" not in result and "data" not in result:
24
+ raise ValueError("Result did not have both 'success' and 'data' field")
25
+ success:bool = result.get("success")
26
+ data:BaseTypes.StringToAnyDict = result.get("data")
27
+ if not success:
28
+ validated_result = fail_class.model_validate(result)
29
+ return validated_result
30
+ else:
31
+ if data is None:
32
+ if no_data_class is None:
33
+ raise ValueError("'no_data_class' must be given to validate No Data")
34
+ validated_result = no_data_class.model_validate(result)
35
+ return validated_result
36
+ else:
37
+ validated_result = data_found_class.model_validate(result)
38
+ return validated_result
39
+ if asyncio.iscoroutinefunction(func):
40
+ @wraps(func)
41
+ async def async_wrapper(*args, **kwargs):
42
+ try:
43
+ result:BaseTypes.StringToAnyDict = await func(*args, **kwargs)
44
+ return _processor(result=result)
45
+ except ValidationError as e:
46
+ raise
47
+ except Exception as e:
48
+ raise
49
+ return async_wrapper
50
+ else:
51
+ @wraps(func)
52
+ def sync_wrapper(*args, **kwargs):
53
+ try:
54
+ result:BaseTypes.StringToAnyDict = func(*args, **kwargs)
55
+ return _processor(result=result)
56
+ except ValidationError as e:
57
+ raise
58
+ except Exception as e:
59
+ raise
60
+ return sync_wrapper
61
+ return decorator
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maleo_foundation
3
- Version: 0.2.29
3
+ Version: 0.2.31
4
4
  Summary: Foundation package for Maleo
5
5
  Author-email: Agra Bima Yuda <agra@nexmedis.com>
6
6
  License: MIT
@@ -39,7 +39,7 @@ maleo_foundation/managers/cache/base.py,sha256=YyPjde4KTsp2IHV6NdFMysa0ev-1GX1rt
39
39
  maleo_foundation/managers/cache/redis.py,sha256=vUpQUAKP_wZb_Fr1wEzICDCPQyBW8jnZ-pktl6AIdmY,1021
40
40
  maleo_foundation/managers/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  maleo_foundation/managers/client/base.py,sha256=AlMsdxIsu2U8BLT2SyEXC7YQXDZjVPZfEmHvV_IUv18,4430
42
- maleo_foundation/managers/client/maleo.py,sha256=pY3285ZjFttte0uN3x3AmqaoCTeFOhXvuI4GbuPbDkQ,2140
42
+ maleo_foundation/managers/client/maleo.py,sha256=BtLITPO-DTuj_TjBPCrdDDnpm0vz7fV6Kdl4H49BhM0,2546
43
43
  maleo_foundation/managers/client/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
44
  maleo_foundation/managers/client/google/base.py,sha256=eIdd6C2BFIu4EyZ1j017VZaJn_nSTPGFftBwQmVAUDA,1366
45
45
  maleo_foundation/managers/client/google/parameter.py,sha256=Lnj7mQgxWQpsQwbmDRK5_bF01M1QpM5PS0eZP2q17yQ,1337
@@ -97,6 +97,7 @@ maleo_foundation/models/transfers/results/service/repository.py,sha256=xz9RakOBE
97
97
  maleo_foundation/models/transfers/results/service/controllers/__init__.py,sha256=HZJWMy2dskzOCzLmp_UaL9rjbQ-sDMI7sd2bXb-4QOU,175
98
98
  maleo_foundation/models/transfers/results/service/controllers/rest.py,sha256=wCuFyOTQkuBs2cqjPsWnPy0XIsCfMqGByhrSy57qp7Y,1107
99
99
  maleo_foundation/utils/__init__.py,sha256=SRPEVoqjZoO6W8rtF_Ti8VIangg6Auwm6eHbZMdOthY,520
100
+ maleo_foundation/utils/client.py,sha256=F5X9TUxWQgeOHjwsMpPoSRhZANQYZ_iFv0RJDTUVhrw,2820
100
101
  maleo_foundation/utils/controller.py,sha256=3n9HcWHqywLhfpgTkzd_NrjWNJgTwGBSokqGgJKeBAU,4132
101
102
  maleo_foundation/utils/exceptions.py,sha256=kDLTWiUauvc-fSKrEyxlGvIi2NtZIAhJ9bV3OXnpTyo,6253
102
103
  maleo_foundation/utils/extractor.py,sha256=SZXVYDHWGaA-Dd1BUydwF2HHdZqexEielS4CjL0Ceng,814
@@ -115,7 +116,7 @@ maleo_foundation/utils/loaders/credential/__init__.py,sha256=qopTKvcMVoTFwyRijeg
115
116
  maleo_foundation/utils/loaders/credential/google.py,sha256=SKsqPuFnAiCcYLf24CxKnMybhVHpgqnq1gGSlThqjts,994
116
117
  maleo_foundation/utils/loaders/key/__init__.py,sha256=hVygcC2ImHc_aVrSrOmyedR8tMUZokWUKCKOSh5ctbo,106
117
118
  maleo_foundation/utils/loaders/key/rsa.py,sha256=gDhyX6iTFtHiluuhFCozaZ3pOLKU2Y9TlrNMK_GVyGU,3796
118
- maleo_foundation-0.2.29.dist-info/METADATA,sha256=ZG11XRzhr1N5hPhR90vt7vS64gYUWzGGiirT_HQB4rk,3598
119
- maleo_foundation-0.2.29.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
120
- maleo_foundation-0.2.29.dist-info/top_level.txt,sha256=_iBos3F_bhEOdjOnzeiEYSrCucasc810xXtLBXI8cQc,17
121
- maleo_foundation-0.2.29.dist-info/RECORD,,
119
+ maleo_foundation-0.2.31.dist-info/METADATA,sha256=cEibWJqK82D4zLoCjT8Vko17fGVcqqTgTEDDfK4HYXI,3598
120
+ maleo_foundation-0.2.31.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
121
+ maleo_foundation-0.2.31.dist-info/top_level.txt,sha256=_iBos3F_bhEOdjOnzeiEYSrCucasc810xXtLBXI8cQc,17
122
+ maleo_foundation-0.2.31.dist-info/RECORD,,