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.
45 lines
857 B
45 lines
857 B
from fastapi import FastAPI
|
|
from pydantic import BaseModel, model_validator
|
|
from typing import Any, Dict
|
|
|
|
import os
|
|
import subprocess
|
|
|
|
|
|
class Sms(BaseModel):
|
|
from_: str
|
|
text: str
|
|
sentStamp: str
|
|
receivedStamp: str
|
|
sim: str
|
|
|
|
@model_validator(mode="before")
|
|
def mangle_keywords(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
|
values["from_"] = values["from"]
|
|
del values["from"]
|
|
return values
|
|
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
@app.get("/")
|
|
async def root():
|
|
return {"message": "Hello World"}
|
|
|
|
|
|
@app.post("/")
|
|
async def sms(sms: Sms):
|
|
subprocess.run(
|
|
[
|
|
"mn",
|
|
"send",
|
|
"--room-id",
|
|
os.environ["MATRIX_ROOM_ID"],
|
|
sms.model_dump_json(),
|
|
],
|
|
env={"MN_NO_KEYRING": "1", "XDG_STATE_HOME": "/srv"},
|
|
check=True,
|
|
)
|
|
return sms
|