Skip to content

Commit 7b53bc0

Browse files
feat: change entrypoint of lib + split responsabilites in components
1 parent 8d5c213 commit 7b53bc0

File tree

7 files changed

+70
-23
lines changed

7 files changed

+70
-23
lines changed

src/api_to_dataframe/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
from api_to_dataframe.main import ClientBuilder
1+
from api_to_dataframe.controller import client_builder as ClientBuilder
2+
from api_to_dataframe.common.utils import retry_strategies as RetryStrategies
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from enum import Enum
2+
3+
4+
class RetryStrategies(Enum):
5+
NoRetryStrategy = 0
6+
LinearStrategy = 1
7+
ExponentialStrategy = 2
8+
CustomStrategy = 3
9+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from api_to_dataframe.common.utils.retry_strategies import RetryStrategies
2+
from api_to_dataframe.models.get_data import GetData
3+
4+
5+
class ClientBuilder:
6+
def __init__(self, endpoint: str, retry_strategy: RetryStrategies = RetryStrategies.NoRetryStrategy):
7+
if endpoint == "":
8+
raise ValueError("::: endpoint param is mandatory :::")
9+
else:
10+
self.endpoint = endpoint
11+
self.retry_strategy = retry_strategy
12+
13+
def get_api_data(self):
14+
response = GetData.get_response(self.endpoint, self.retry_strategy)
15+
return response
16+
17+
@staticmethod
18+
def api_to_dataframe(response: dict):
19+
df = GetData.to_dataframe(response)
20+
return df

src/api_to_dataframe/main.py

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import requests
2+
import pandas as pd
3+
4+
from api_to_dataframe.common.utils.retry_strategies import RetryStrategies
5+
6+
7+
class GetData:
8+
@staticmethod
9+
def get_response(endpoint: str, RetryStrategies: RetryStrategies):
10+
response = requests.get(endpoint)
11+
12+
if response.ok:
13+
return response.json()
14+
else:
15+
raise ConnectionError(response.status_code)
16+
17+
@staticmethod
18+
def to_dataframe(response):
19+
df = pd.DataFrame(response)
20+
if df.empty:
21+
raise ValueError("::: DataFrame is empty :::")
22+
else:
23+
return df
24+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from api_to_dataframe.common.utils.retry_strategies import RetryStrategies
2+
3+
4+
class Retainer:
5+
@staticmethod
6+
def strategy(retry_strategy: RetryStrategies = RetryStrategies.NoRetryStrategy):
7+
if retry_strategy == RetryStrategies.NoRetryStrategy:
8+
print("::: NoRetryStrategy :::")
9+
elif retry_strategy == RetryStrategies.LinearStrategy:
10+
print("::: LinearStrategy :::")
11+
elif retry_strategy == RetryStrategies.ExponentialStrategy:
12+
print("::: ExponentialStrategy :::")
13+
elif retry_strategy == RetryStrategies.CustomStrategy:
14+
print("::: CustomStrategy :::")
15+

src/api_to_dataframe/views/dataframe_metrics.py

Whitespace-only changes.

0 commit comments

Comments
 (0)