Skip to content

Commit

Permalink
feat: change entrypoint of lib + split responsabilites in components
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanildoBarauna committed Jun 13, 2024
1 parent 8d5c213 commit 7b53bc0
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 23 deletions.
3 changes: 2 additions & 1 deletion src/api_to_dataframe/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from api_to_dataframe.main import ClientBuilder
from api_to_dataframe.controller import client_builder as ClientBuilder
from api_to_dataframe.common.utils import retry_strategies as RetryStrategies
9 changes: 9 additions & 0 deletions src/api_to_dataframe/common/utils/retry_strategies.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from enum import Enum


class RetryStrategies(Enum):
NoRetryStrategy = 0
LinearStrategy = 1
ExponentialStrategy = 2
CustomStrategy = 3

20 changes: 20 additions & 0 deletions src/api_to_dataframe/controller/client_builder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from api_to_dataframe.common.utils.retry_strategies import RetryStrategies
from api_to_dataframe.models.get_data import GetData


class ClientBuilder:
def __init__(self, endpoint: str, retry_strategy: RetryStrategies = RetryStrategies.NoRetryStrategy):
if endpoint == "":
raise ValueError("::: endpoint param is mandatory :::")
else:
self.endpoint = endpoint
self.retry_strategy = retry_strategy

def get_api_data(self):
response = GetData.get_response(self.endpoint, self.retry_strategy)
return response

@staticmethod
def api_to_dataframe(response: dict):
df = GetData.to_dataframe(response)
return df
22 changes: 0 additions & 22 deletions src/api_to_dataframe/main.py

This file was deleted.

24 changes: 24 additions & 0 deletions src/api_to_dataframe/models/get_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import requests
import pandas as pd

from api_to_dataframe.common.utils.retry_strategies import RetryStrategies


class GetData:
@staticmethod
def get_response(endpoint: str, RetryStrategies: RetryStrategies):
response = requests.get(endpoint)

if response.ok:
return response.json()
else:
raise ConnectionError(response.status_code)

@staticmethod
def to_dataframe(response):
df = pd.DataFrame(response)
if df.empty:
raise ValueError("::: DataFrame is empty :::")
else:
return df

15 changes: 15 additions & 0 deletions src/api_to_dataframe/models/retainer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from api_to_dataframe.common.utils.retry_strategies import RetryStrategies


class Retainer:
@staticmethod
def strategy(retry_strategy: RetryStrategies = RetryStrategies.NoRetryStrategy):
if retry_strategy == RetryStrategies.NoRetryStrategy:
print("::: NoRetryStrategy :::")
elif retry_strategy == RetryStrategies.LinearStrategy:
print("::: LinearStrategy :::")
elif retry_strategy == RetryStrategies.ExponentialStrategy:
print("::: ExponentialStrategy :::")
elif retry_strategy == RetryStrategies.CustomStrategy:
print("::: CustomStrategy :::")

Empty file.

0 comments on commit 7b53bc0

Please sign in to comment.