from typing import Any, Dict, List import requests from . import _BASE_URL, _headers, _with_token @_with_token def get(story_id: int = None, token: str = None) -> Dict[str, Any]: r = requests.get(f"{_BASE_URL}/stories/{story_id}", headers=_headers(token)) return r.json() @_with_token def post(project_id: int, token: str, **kwargs: Any) -> Dict[str, Any]: r = requests.post( f"{_BASE_URL}/projects/{project_id}/stories", headers={"X-TrackerToken": token}, json=kwargs, ) r.raise_for_status() return r.json() @_with_token def put_story(story_id: int, token: str, **kwargs: Any) -> Dict[str, Any]: r = requests.put( f"{_BASE_URL}/stories/{story_id}", headers=_headers(token), json=kwargs ) return r.json() @_with_token def get_tasks(project_id: int, story_id: int, token: str) -> List[Dict[str, Any]]: url = f"{_BASE_URL}/projects/{project_id}/stories/{story_id}/tasks" r = requests.get(url, headers=_headers(token)) return r.json() @_with_token def get_comments(project_id: int, story_id: int, token: str) -> List[Dict[str, Any]]: url = f"{_BASE_URL}/projects/{project_id}/stories/{story_id}/comments" r = requests.get(url, headers=_headers(token)) return r.json() @_with_token def post_comment( project_id: int, story_id: int, token: str, **kwargs ) -> Dict[str, Any]: url = f"{_BASE_URL}/projects/{project_id}/stories/{story_id}/comments" r = requests.post(url, headers=_headers(token), json=kwargs) r.raise_for_status() return r.json() @_with_token def get_blockers(project_id: int, story_id: int, token: str) -> List[Dict[str, Any]]: url = f"{_BASE_URL}/projects/{project_id}/stories/{story_id}/blockers" r = requests.get(url, headers=_headers(token)) r.raise_for_status() return r.json() @_with_token def post_blocker( project_id: int, story_id: int, token: str, **kwargs ) -> Dict[str, Any]: r = requests.post( f"{_BASE_URL}/projects/{project_id}/stories/{story_id}/blockers", headers={"X-TrackerToken": token}, json=kwargs, ) r.raise_for_status() return r.json()