Skip to content

Commit 797dde7

Browse files
committed
Add a common DELETE method
1 parent f38ad98 commit 797dde7

File tree

1 file changed

+43
-49
lines changed

1 file changed

+43
-49
lines changed

datawrapper/__main__.py

Lines changed: 43 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,37 @@ def __init__(self, access_token=_ACCESS_TOKEN):
6868
self._access_token = access_token
6969
self._auth_header = {"Authorization": f"Bearer {access_token}"}
7070

71+
def delete(self, url: str, timeout: int = 15) -> bool:
72+
"""Make a DELETE request to the Datawrapper API.
73+
74+
Parameters
75+
----------
76+
url : str
77+
The URL to request.
78+
timeout : int, optional
79+
The timeout for the request in seconds, by default 15
80+
81+
Returns
82+
-------
83+
bool
84+
Whether the request was successful.
85+
"""
86+
# Set the headers
87+
headers = self._auth_header
88+
headers["accept"] = "*/*"
89+
90+
# Make the request
91+
response = r.delete(url, headers=headers)
92+
93+
# Handle the response
94+
if response.ok:
95+
return True
96+
else:
97+
logger.error(
98+
f"Delete request failed with status code {response.status_code}."
99+
)
100+
raise FailedRequest(response)
101+
71102
def get(self, url: str, params: dict | None = None, timeout: int = 15) -> Any:
72103
"""Make a GET request to the Datawrapper API.
73104
@@ -1016,7 +1047,7 @@ def update_folder(
10161047
data=_query,
10171048
)
10181049

1019-
def delete_folder(self, folder_id: str | int):
1050+
def delete_folder(self, folder_id: str | int) -> bool:
10201051
"""Delete an existing folder.
10211052
10221053
Parameters
@@ -1026,25 +1057,10 @@ def delete_folder(self, folder_id: str | int):
10261057
10271058
Returns
10281059
-------
1029-
r.Response.content
1030-
The content of the requests.delete request
1060+
bool
1061+
True if the folder was deleted successfully.
10311062
"""
1032-
_header = self._auth_header
1033-
_header["accept"] = "*/*"
1034-
1035-
url = self._FOLDERS_URL + f"/{folder_id}"
1036-
response = r.delete(
1037-
url=url,
1038-
headers=_header,
1039-
)
1040-
1041-
if response.ok:
1042-
logger.debug(f"Folder {folder_id} deleted")
1043-
return response.content
1044-
else:
1045-
msg = "Folder could not be deleted."
1046-
logger.error(msg)
1047-
raise Exception(msg)
1063+
return self.delete(f"{self._FOLDERS_URL }/{folder_id}")
10481064

10491065
def move_chart(self, chart_id: str, folder_id: str) -> dict:
10501066
"""Moves a chart, table, or map to a specified folder.
@@ -1091,7 +1107,7 @@ def fork_chart(self, chart_id: str) -> dict:
10911107
"""
10921108
return self.post(f"{self._CHARTS_URL}/{chart_id}/fork")
10931109

1094-
def delete_chart(self, chart_id: str) -> r.Response.content: # type: ignore
1110+
def delete_chart(self, chart_id: str) -> bool:
10951111
"""Deletes a specified chart, table or map.
10961112
10971113
Parameters
@@ -1101,18 +1117,10 @@ def delete_chart(self, chart_id: str) -> r.Response.content: # type: ignore
11011117
11021118
Returns
11031119
-------
1104-
r.Response.content
1105-
The content of the requests.delete
1120+
bool
1121+
True if the chart was deleted successfully.
11061122
"""
1107-
1108-
delete_chart_response = r.delete(
1109-
url=self._CHARTS_URL + f"/{chart_id}", headers=self._auth_header
1110-
)
1111-
if delete_chart_response.content:
1112-
return delete_chart_response.content
1113-
else:
1114-
logger.debug(f"Successfully deleted chart with id {chart_id}")
1115-
return None
1123+
return self.delete(f"{self._CHARTS_URL}/{chart_id}")
11161124

11171125
def get_charts(
11181126
self,
@@ -1297,7 +1305,7 @@ def update_team(
12971305
data=_query,
12981306
)
12991307

1300-
def delete_team(self, team_id: str):
1308+
def delete_team(self, team_id: str) -> bool:
13011309
"""Delete an existing team.
13021310
13031311
Parameters
@@ -1307,21 +1315,7 @@ def delete_team(self, team_id: str):
13071315
13081316
Returns
13091317
-------
1310-
r.Response.content
1311-
The content of the requests.delete
1318+
bool
1319+
True if team was deleted successfully.
13121320
"""
1313-
_header = self._auth_header
1314-
_header["accept"] = "*/*"
1315-
1316-
response = r.delete(
1317-
url=self._TEAMS_URL + f"/{team_id}",
1318-
headers=_header,
1319-
)
1320-
1321-
if response.ok:
1322-
logger.debug(f"Team {team_id} deleted")
1323-
return response.content
1324-
else:
1325-
msg = "Team could not be deleted."
1326-
logger.error(msg)
1327-
raise Exception(msg)
1321+
return self.delete(f"{self._TEAMS_URL}/{team_id}")

0 commit comments

Comments
 (0)