2023-05-16 15:35:02 +00:00
|
|
|
from json import loads
|
|
|
|
from tapita import Cover
|
|
|
|
from io import BytesIO
|
|
|
|
import base64
|
|
|
|
|
|
|
|
|
|
|
|
def handle(req):
|
|
|
|
"""handle a request to the function
|
|
|
|
Args:
|
|
|
|
req (str): request body
|
|
|
|
|
|
|
|
{
|
|
|
|
"title": "foo",
|
|
|
|
"subtitle": "bar",
|
|
|
|
"author": "bat",
|
|
|
|
}
|
|
|
|
"""
|
2023-05-16 17:01:04 +00:00
|
|
|
if not req:
|
|
|
|
return "Foo", 200, {"Content-Type": "text/plain"}
|
2023-05-16 15:35:02 +00:00
|
|
|
try:
|
|
|
|
args = loads(req)
|
|
|
|
except Exception:
|
|
|
|
return "Bad Request", 400
|
|
|
|
|
|
|
|
c = Cover(**args)
|
|
|
|
byte_arr = BytesIO()
|
|
|
|
c.image.save(byte_arr, format="JPEG")
|
|
|
|
|
|
|
|
return (
|
2023-05-16 17:01:04 +00:00
|
|
|
f'<img src="data:image/jpeg;base64, {base64.b64encode(byte_arr.getvalue()).decode("utf-8")}" style="width: 100%; border: solid 1px #aaa;">',
|
2023-05-16 15:35:02 +00:00
|
|
|
200,
|
|
|
|
{"Content-Type": "text/html"},
|
|
|
|
)
|