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

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