maleo-foundation 0.3.29__tar.gz → 0.3.32__tar.gz

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.
Files changed (145) hide show
  1. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/PKG-INFO +1 -1
  2. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/service.py +22 -9
  3. maleo_foundation-0.3.32/maleo_foundation/models/transfers/general/__init__.py +5 -0
  4. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation.egg-info/PKG-INFO +1 -1
  5. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/pyproject.toml +1 -1
  6. maleo_foundation-0.3.29/maleo_foundation/models/transfers/general/__init__.py +0 -80
  7. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/README.md +0 -0
  8. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/__init__.py +0 -0
  9. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/authentication.py +0 -0
  10. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/authorization.py +0 -0
  11. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/__init__.py +0 -0
  12. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/manager.py +0 -0
  13. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/__init__.py +0 -0
  14. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/encryption/__init__.py +0 -0
  15. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/encryption/aes.py +0 -0
  16. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/encryption/rsa.py +0 -0
  17. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/hash/__init__.py +0 -0
  18. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/hash/bcrypt.py +0 -0
  19. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/hash/hmac.py +0 -0
  20. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/hash/sha256.py +0 -0
  21. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/key.py +0 -0
  22. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/signature.py +0 -0
  23. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/client/services/token.py +0 -0
  24. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/constants.py +0 -0
  25. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/enums.py +0 -0
  26. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/__init__.py +0 -0
  27. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/client.py +0 -0
  28. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/encryption/__init__.py +0 -0
  29. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/encryption/aes.py +0 -0
  30. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/encryption/rsa.py +0 -0
  31. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/general.py +0 -0
  32. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/hash.py +0 -0
  33. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/key.py +0 -0
  34. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/repository.py +0 -0
  35. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/service.py +0 -0
  36. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/signature.py +0 -0
  37. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/expanded_types/token.py +0 -0
  38. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/extended_types.py +0 -0
  39. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/__init__.py +0 -0
  40. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/cache.py +0 -0
  41. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/__init__.py +0 -0
  42. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/base.py +0 -0
  43. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/__init__.py +0 -0
  44. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/base.py +0 -0
  45. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/parameter.py +0 -0
  46. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/secret.py +0 -0
  47. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/storage.py +0 -0
  48. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/google/subscription.py +0 -0
  49. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/client/maleo.py +0 -0
  50. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/configuration.py +0 -0
  51. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/credential.py +0 -0
  52. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/db.py +0 -0
  53. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/managers/middleware.py +0 -0
  54. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/middlewares/authentication.py +0 -0
  55. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/middlewares/base.py +0 -0
  56. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/middlewares/cors.py +0 -0
  57. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/__init__.py +0 -0
  58. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/responses.py +0 -0
  59. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/__init__.py +0 -0
  60. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/encryption.py +0 -0
  61. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/general.py +0 -0
  62. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/hash.py +0 -0
  63. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/key.py +0 -0
  64. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/parameter.py +0 -0
  65. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/result.py +0 -0
  66. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/signature.py +0 -0
  67. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/schemas/token.py +0 -0
  68. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/table.py +0 -0
  69. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/__init__.py +0 -0
  70. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/__init__.py +0 -0
  71. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/cache/__init__.py +0 -0
  72. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/cache/redis.py +0 -0
  73. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/client/__init__.py +0 -0
  74. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/client/maleo.py +0 -0
  75. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/database.py +0 -0
  76. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/middleware.py +0 -0
  77. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/configurations/service.py +0 -0
  78. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/credentials.py +0 -0
  79. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/database.py +0 -0
  80. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/key.py +0 -0
  81. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/request.py +0 -0
  82. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/settings.py +0 -0
  83. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/signature.py +0 -0
  84. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/general/token.py +0 -0
  85. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/__init__.py +0 -0
  86. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/client.py +0 -0
  87. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/encryption/__init__.py +0 -0
  88. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/encryption/aes.py +0 -0
  89. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/encryption/rsa.py +0 -0
  90. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/general.py +0 -0
  91. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/hash/__init__.py +0 -0
  92. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/hash/bcrypt.py +0 -0
  93. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/hash/hmac.py +0 -0
  94. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/hash/sha256.py +0 -0
  95. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/key.py +0 -0
  96. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/service.py +0 -0
  97. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/signature.py +0 -0
  98. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/parameters/token.py +0 -0
  99. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/__init__.py +0 -0
  100. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/client/__init__.py +0 -0
  101. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/client/controllers/__init__.py +0 -0
  102. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/client/controllers/http.py +0 -0
  103. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/client/service.py +0 -0
  104. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/encryption/__init__.py +0 -0
  105. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/encryption/aes.py +0 -0
  106. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/encryption/rsa.py +0 -0
  107. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/hash.py +0 -0
  108. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/key.py +0 -0
  109. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/service/__init__.py +0 -0
  110. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/service/controllers/__init__.py +0 -0
  111. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/service/controllers/rest.py +0 -0
  112. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/service/general.py +0 -0
  113. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/service/repository.py +0 -0
  114. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/signature.py +0 -0
  115. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/models/transfers/results/token.py +0 -0
  116. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/rest_controller_result.py +0 -0
  117. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/types.py +0 -0
  118. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/__init__.py +0 -0
  119. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/cache.py +0 -0
  120. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/client.py +0 -0
  121. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/controller.py +0 -0
  122. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/dependencies/__init__.py +0 -0
  123. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/dependencies/auth.py +0 -0
  124. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/dependencies/context.py +0 -0
  125. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/exceptions.py +0 -0
  126. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/extractor.py +0 -0
  127. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/formatter/__init__.py +0 -0
  128. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/formatter/case.py +0 -0
  129. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/__init__.py +0 -0
  130. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/credential/__init__.py +0 -0
  131. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/credential/google.py +0 -0
  132. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/json.py +0 -0
  133. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/key/__init__.py +0 -0
  134. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/key/rsa.py +0 -0
  135. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/loaders/yaml.py +0 -0
  136. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/logging.py +0 -0
  137. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/merger.py +0 -0
  138. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/query.py +0 -0
  139. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/repository.py +0 -0
  140. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation/utils/searcher.py +0 -0
  141. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation.egg-info/SOURCES.txt +0 -0
  142. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation.egg-info/dependency_links.txt +0 -0
  143. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation.egg-info/requires.txt +0 -0
  144. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/maleo_foundation.egg-info/top_level.txt +0 -0
  145. {maleo_foundation-0.3.29 → maleo_foundation-0.3.32}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maleo_foundation
3
- Version: 0.3.29
3
+ Version: 0.3.32
4
4
  Summary: Foundation package for Maleo
5
5
  Author-email: Agra Bima Yuda <agra@nexmedis.com>
6
6
  License: MIT
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  from fastapi import FastAPI, APIRouter
2
3
  from fastapi.exceptions import RequestValidationError
3
4
  from google.oauth2.service_account import Credentials
@@ -152,6 +153,20 @@ class ServiceManager:
152
153
  def loggers(self) -> Loggers:
153
154
  return self._loggers
154
155
 
156
+ async def _clear_cache(self) -> None:
157
+ prefix = self.configurations.service.key
158
+ async for key in self._redis.scan_iter(f"{prefix}*"):
159
+ await self._redis.delete(key)
160
+
161
+ def check_redis_connection(self) -> bool:
162
+ try:
163
+ self._redis.ping()
164
+ self._loggers.application.info("Redis connection check successful.")
165
+ return True
166
+ except RedisError as e:
167
+ self._loggers.application.error(f"Redis connection check failed: {e}", exc_info=True)
168
+ return False
169
+
155
170
  def _initialize_cache(self) -> None:
156
171
  self._redis = Redis(
157
172
  host=self.configurations.cache.redis.host,
@@ -161,7 +176,14 @@ class ServiceManager:
161
176
  decode_responses=self.configurations.cache.redis.decode_responses,
162
177
  health_check_interval=self.configurations.cache.redis.health_check_interval
163
178
  )
179
+ self.check_redis_connection()
164
180
  self._cache = CacheManagers(redis=self._redis)
181
+ try:
182
+ asyncio.run(self._clear_cache())
183
+ except RuntimeError:
184
+ loop = asyncio.new_event_loop()
185
+ asyncio.set_event_loop(loop)
186
+ loop.run_until_complete(self._clear_cache())
165
187
 
166
188
  @property
167
189
  def redis(self) -> Redis:
@@ -171,15 +193,6 @@ class ServiceManager:
171
193
  def cache(self) -> CacheManagers:
172
194
  return self._cache
173
195
 
174
- def check_redis_connection(self) -> bool:
175
- try:
176
- self._redis.ping()
177
- self._loggers.application.info("Redis connection check successful.")
178
- return True
179
- except RedisError as e:
180
- self._loggers.application.error(f"Redis connection check failed: {e}", exc_info=True)
181
- return False
182
-
183
196
  def _initialize_cloud_storage(self) -> None:
184
197
  environment = (
185
198
  BaseEnums.EnvironmentType.STAGING
@@ -0,0 +1,5 @@
1
+ from __future__ import annotations
2
+ from .token import MaleoFoundationTokenGeneralTransfers
3
+
4
+ class BaseGeneralTransfers:
5
+ Token = MaleoFoundationTokenGeneralTransfers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maleo_foundation
3
- Version: 0.3.29
3
+ Version: 0.3.32
4
4
  Summary: Foundation package for Maleo
5
5
  Author-email: Agra Bima Yuda <agra@nexmedis.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "maleo_foundation"
7
- version = "0.3.29"
7
+ version = "0.3.32"
8
8
  description = "Foundation package for Maleo"
9
9
  authors = [
10
10
  { name = "Agra Bima Yuda", email = "agra@nexmedis.com" }
@@ -1,80 +0,0 @@
1
- from __future__ import annotations
2
- from datetime import datetime, timezone
3
- from pydantic import BaseModel, Field
4
- from typing import Dict, Any
5
- from uuid import UUID
6
- from maleo_foundation.models.schemas.general import BaseGeneralSchemas
7
- from maleo_foundation.types import BaseTypes
8
- from .token import MaleoFoundationTokenGeneralTransfers
9
-
10
- class BaseGeneralTransfers:
11
- Token = MaleoFoundationTokenGeneralTransfers
12
-
13
- class AccessTransfers(
14
- BaseGeneralSchemas.AccessedBy,
15
- BaseGeneralSchemas.AccessedAt
16
- ): pass
17
-
18
- class RequestContextTransfers(BaseModel):
19
- request_id: UUID = Field(..., description="Unique identifier for tracing the request")
20
- requested_at: datetime = Field(datetime.now(tz=timezone.utc), description="Request timestamp")
21
- method: str = Field(..., description="Request's method")
22
- url: str = Field(..., description="Request's URL")
23
- path_params: Dict = Field(..., description="Request's path parameters")
24
- query_params: Dict = Field(..., description="Request's query parameters")
25
- ip_address: str = Field("unknown", description="Client's IP address")
26
- is_internal: BaseTypes.OptionalBoolean = Field(None, description="True if IP is internal")
27
- user_agent: BaseTypes.OptionalString = Field(None, description="User-Agent string")
28
- ua_browser: BaseTypes.OptionalString = Field(None, description="Browser info from sec-ch-ua")
29
- ua_mobile: BaseTypes.OptionalString = Field(None, description="Is mobile device?")
30
- platform: BaseTypes.OptionalString = Field(None, description="Client platform or OS")
31
- referer: BaseTypes.OptionalString = Field(None, description="Referrer URL")
32
- origin: BaseTypes.OptionalString = Field(None, description="Origin of the request")
33
- host: BaseTypes.OptionalString = Field(None, description="Host header from request")
34
- forwarded_proto: BaseTypes.OptionalString = Field(None, description="Forwarded protocol (http/https)")
35
- language: BaseTypes.OptionalString = Field(None, description="Accepted languages from client")
36
-
37
- def to_google_pubsub_object(self) -> Dict[str, Any]:
38
- result = {
39
- "request_id": str(self.request_id),
40
- "requested_at": self.requested_at.isoformat(),
41
- "method": self.method,
42
- "url": self.url,
43
- "path_params": {"map": self.path_params},
44
- "query_params": {"map": self.query_params},
45
- "ip_address": self.ip_address,
46
- "is_internal": None if self.is_internal is None else {"boolean": self.is_internal},
47
- "user_agent": None if self.user_agent is None else {"string": self.user_agent},
48
- "ua_browser": None if self.ua_browser is None else {"string": self.ua_browser},
49
- "ua_mobile": None if self.ua_mobile is None else {"string": self.ua_mobile},
50
- "platform": None if self.platform is None else {"string": self.platform},
51
- "referer": None if self.referer is None else {"array": self.referer},
52
- "origin": None if self.origin is None else {"array": self.origin},
53
- "host": None if self.host is None else {"array": self.host},
54
- "forwarded_proto": None if self.forwarded_proto is None else {"array": self.forwarded_proto},
55
- "language": None if self.language is None else {"array": self.language}
56
- }
57
-
58
- return result
59
-
60
- @classmethod
61
- def from_google_pubsub_object(cls, obj:Dict[str, Any]):
62
- return cls(
63
- request_id = UUID(obj["request_id"]),
64
- requested_at = datetime.fromisoformat(obj["requested_at"]),
65
- method = obj["method"],
66
- url = obj["url"],
67
- path_params = obj["path_params"]["map"] or {},
68
- query_params = obj["query_params"]["map"] or {},
69
- ip_address = obj["ip_address"],
70
- is_internal = None if obj["is_internal"] is None else bool(obj["is_internal"]["boolean"]),
71
- user_agent = None if obj["user_agent"] is None else obj["user_agent"]["string"],
72
- ua_browser = None if obj["ua_browser"] is None else obj["ua_browser"]["string"],
73
- ua_mobile = None if obj["ua_mobile"] is None else obj["ua_mobile"]["string"],
74
- platform = None if obj["platform"] is None else obj["platform"]["string"],
75
- referer = None if obj["referer"] is None else obj["referer"]["string"],
76
- origin = None if obj["origin"] is None else obj["origin"]["string"],
77
- host = None if obj["host"] is None else obj["host"]["string"],
78
- forwarded_proto = None if obj["forwarded_proto"] is None else obj["forwarded_proto"]["string"],
79
- language = None if obj["language"] is None else obj["language"]["string"],
80
- )