oxo/oxo/api.py

31 lines
849 B
Python

import io
import typing as t
from pathlib import Path
import httpx
def post_to(base_url: str, *, data: t.Iterable[t.Dict]) -> str:
retval = []
with httpx.Client() as client:
for d in data:
if isinstance(d.get("file"), io.BufferedReader):
res = client.post(base_url, files=d)
else:
res = client.post(base_url, data=d)
res.raise_for_status()
retval.append(res.text.strip())
return " ".join(retval)
def files(base_url, files: t.List[Path]):
return post_to(base_url, data=({"file": f.open("rb")} for f in files))
def repost(base_url, urls: t.List[str]):
return post_to(base_url, data=({"url": u.strip()} for u in urls))
def shorten(base_url, urls: t.List[str]):
return post_to(base_url, data=({"shorten": u.strip()} for u in urls))