You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
67 lines
1.4 KiB
from __future__ import annotations
|
|
|
|
import json
|
|
from typing import Any, Dict
|
|
|
|
from requests import Session
|
|
|
|
from ..todoist_api_python.headers import create_headers
|
|
|
|
|
|
def get(
|
|
session: Session,
|
|
url: str,
|
|
token: str | None = None,
|
|
params: Dict[str, Any] | None = None,
|
|
):
|
|
response = session.get(url, params=params, headers=create_headers(token=token))
|
|
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
|
|
response.raise_for_status()
|
|
return response.ok
|
|
|
|
|
|
def post(
|
|
session: Session,
|
|
url: str,
|
|
token: str | None = None,
|
|
data: Dict[str, Any] | None = None,
|
|
):
|
|
request_id = data.pop("request_id", None) if data else None
|
|
|
|
headers = create_headers(
|
|
token=token, with_content=True if data else False, request_id=request_id
|
|
)
|
|
|
|
response = session.post(
|
|
url,
|
|
headers=headers,
|
|
data=json.dumps(data) if data else None,
|
|
)
|
|
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
|
|
response.raise_for_status()
|
|
return response.ok
|
|
|
|
|
|
def delete(
|
|
session: Session,
|
|
url: str,
|
|
token: str | None = None,
|
|
args: Dict[str, Any] | None = None,
|
|
):
|
|
request_id = args.pop("request_id", None) if args else None
|
|
|
|
headers = create_headers(token=token, request_id=request_id)
|
|
|
|
response = session.delete(
|
|
url,
|
|
headers=headers,
|
|
)
|
|
|
|
response.raise_for_status()
|
|
return response.ok
|
|
|