Setup scaffold of call routing
This commit is contained in:
82
did_router/src/httapi.rs
Normal file
82
did_router/src/httapi.rs
Normal file
@@ -0,0 +1,82 @@
|
||||
use xml_builder::{XMLBuilder, XMLElement, XMLVersion};
|
||||
use super::database as db;
|
||||
use super::database::{DidTargetType, Did};
|
||||
|
||||
pub fn url(_did: Did) -> XMLElement {
|
||||
let work = XMLElement::new("work");
|
||||
work
|
||||
}
|
||||
|
||||
pub fn moh(_did: Did) -> XMLElement {
|
||||
let work = XMLElement::new("work");
|
||||
work
|
||||
}
|
||||
|
||||
pub fn external_number(_did: Did) -> XMLElement {
|
||||
let work = XMLElement::new("work");
|
||||
work
|
||||
}
|
||||
|
||||
pub fn no_service(_did: Did) -> XMLElement {
|
||||
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();
|
||||
work
|
||||
}
|
||||
|
||||
pub fn night_mode(_did: Did) -> XMLElement {
|
||||
let work = XMLElement::new("work");
|
||||
work
|
||||
}
|
||||
|
||||
pub fn custom_message(_did: Did) -> XMLElement {
|
||||
let work = XMLElement::new("work");
|
||||
work
|
||||
}
|
||||
|
||||
pub fn route_call(did: String) -> Vec<u8> {
|
||||
let d = db::get_did_by(&did).unwrap();
|
||||
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 work = match d.target_type {
|
||||
DidTargetType::Url => {
|
||||
url(d)
|
||||
},
|
||||
DidTargetType::Moh => {
|
||||
moh(d)
|
||||
},
|
||||
DidTargetType::ExternalNumber => {
|
||||
external_number(d)
|
||||
},
|
||||
DidTargetType::NoService => {
|
||||
no_service(d)
|
||||
},
|
||||
DidTargetType::NightMode => {
|
||||
night_mode(d)
|
||||
},
|
||||
DidTargetType::CustomMessage => {
|
||||
custom_message(d)
|
||||
}
|
||||
};
|
||||
|
||||
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();
|
||||
|
||||
writer
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user