31 lines
849 B
Python
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))
|