Database and api route ready

This commit is contained in:
2026-03-24 22:40:08 -04:00
parent 7d8a182afd
commit 6bffd594c0
16 changed files with 437 additions and 23 deletions

View File

@@ -1,28 +1,86 @@
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
pub mod database;
pub mod schema;
#[get("/")]
async fn hello() -> impl Responder {
HttpResponse::Ok().body("Hello world!")
use xml_builder::{XMLBuilder, XMLElement, XMLVersion};
use actix_web::{get, post, web, App,
HttpResponse,
HttpServer,
http::header::ContentType,
Responder,
};
use database::{ add_did,
list_did
};
async fn route_did() -> impl Responder {
let mut xml = XMLBuilder::new()
.version(XMLVersion::XML1_1)
.encoding("UTF-8".into())
.build();
let mut doc = XMLElement::new("document");
doc.add_attribute("type", "xml/freeswitch-httapi");
let params = XMLElement::new("params");
let mut work = XMLElement::new("work");
let mut playback = XMLElement::new("playback");
playback.add_attribute("name", "exten");
playback.add_attribute("file", "ivr/ivr-welcome_to_freeswitch.wav");
work.add_child(playback).unwrap();
doc.add_child(params).unwrap();
doc.add_child(work).unwrap();
xml.set_root_element(doc);
let mut writer: Vec<u8> = Vec::new();
xml.generate(&mut writer).unwrap();
HttpResponse::Ok()
.content_type(ContentType::xml())
.body(writer)
}
#[post("/echo")]
async fn echo(req_body: String) -> impl Responder {
HttpResponse::Ok().body(req_body)
async fn did_post() -> impl Responder {
add_did().unwrap();
HttpResponse::Ok().body("DID added.")
}
async fn manual_hello() -> impl Responder {
HttpResponse::Ok().body("Hey there!")
async fn did_index() -> impl Responder {
let dids = list_did().unwrap();
HttpResponse::Ok().json(dids)
}
fn api_config(cfg: &mut web::ServiceConfig) {
cfg.service(
web::resource("/fs")
.route(web::get().to(did_index))
.route(web::post().to(did_post))
.route(web::patch().to(|| async { HttpResponse::Ok().body("did patch") }))
.route(web::delete().to(|| async { HttpResponse::Ok().body("did delete") }))
);
cfg.service(
web::resource("/fs/{id}")
.route(web::get().to(|| async { HttpResponse::Ok().body("did get")}))
.route(web::patch().to(|| async { HttpResponse::Ok().body("did patch")}))
.route(web::delete().to(|| async { HttpResponse::Ok().body("did delete")}))
);
cfg.service(
web::resource("/route_did")
.route(web::post().to(route_did))
);
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(hello)
.service(echo)
.route("/hey", web::get().to(manual_hello))
.service(
web::scope("/api").configure(api_config))
})
.bind(("127.0.0.1", 8080))?
.bind(("0.0.0.0", 3000))?
.run()
.await
}