Skip to content

Commit

Permalink
Added responses
Browse files Browse the repository at this point in the history
  • Loading branch information
Amele9 committed Jan 13, 2024
1 parent 2eb095b commit 6ea7a5e
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 7 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
requests==2.31.0
pydantic==2.5.3
14 changes: 10 additions & 4 deletions whatsapp_api_client_python/API.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,15 @@ def __init__(
apiTokenInstance: str,
debug_mode: bool = False,
raise_errors: bool = False,
create_models: bool = False,
host: str = "https://api.green-api.com",
media: str = "https://media.green-api.com"
):
self.host = host
self.media = media
self.debug_mode = debug_mode
self.raise_errors = raise_errors
self.create_models = create_models

self.idInstance = idInstance
self.apiTokenInstance = apiTokenInstance
Expand Down Expand Up @@ -88,11 +90,13 @@ def request(
raise GreenAPIError(error_message)
self.logger.log(logging.CRITICAL, error_message)

return GreenAPIResponse(None, error_message)
return GreenAPIResponse(None, error_message, self.create_models)

self.__handle_response(response)

return GreenAPIResponse(response.status_code, response.text)
return GreenAPIResponse(
response.status_code, response.text, self.create_models
)

def raw_request(self, **arguments: Any) -> GreenAPIResponse:
try:
Expand All @@ -104,11 +108,13 @@ def raw_request(self, **arguments: Any) -> GreenAPIResponse:
raise GreenAPIError(error_message)
self.logger.log(logging.CRITICAL, error_message)

return GreenAPIResponse(None, error_message)
return GreenAPIResponse(None, error_message, self.create_models)

self.__handle_response(response)

return GreenAPIResponse(response.status_code, response.text)
return GreenAPIResponse(
response.status_code, response.text, self.create_models
)

def __handle_response(self, response: Response) -> Optional[NoReturn]:
status_code = response.status_code
Expand Down
22 changes: 19 additions & 3 deletions whatsapp_api_client_python/response.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
from json import loads
from typing import Optional
from typing import Generic, Optional, Type, TypeVar

from .responses.base import BaseResponse

class Response:
Model = TypeVar("Model", bound=BaseResponse)


class Response(Generic[Model]):
code: Optional[int]
data: Optional[dict] = None
error: Optional[str] = None

def __init__(self, code: Optional[int], text: str):
create_models: bool = False
model: Optional[Model] = None

def __init__(self, code: Optional[int], text: str, create_models: bool):
self.code = code
if self.code == 200:
self.data = loads(text)
else:
self.error = text

self.create_models = create_models

def create_model(self, response_type: Type[BaseResponse]) -> None:
if self.create_models:
self.model = response_type(**self.data)


__all__ = ["Response"]
Empty file.
9 changes: 9 additions & 0 deletions whatsapp_api_client_python/responses/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from pydantic import BaseModel, ConfigDict
from pydantic.alias_generators import to_camel


class BaseResponse(BaseModel):
model_config = ConfigDict(alias_generator=to_camel)


__all__ = ["BaseResponse"]

0 comments on commit 6ea7a5e

Please sign in to comment.