88 lines
3.0 KiB
Rust
88 lines
3.0 KiB
Rust
use crate::*;
|
|
|
|
// TODO: Use autodefault when https://github.com/Lucretiel/autodefault/issues/4
|
|
// is fixed
|
|
|
|
pub fn spec() -> IDL {
|
|
IDL {
|
|
name: "hypercosm".to_owned(),
|
|
root: Module {
|
|
interfaces: vec![
|
|
Interface {
|
|
name: "object".to_owned(),
|
|
version: (1, 0, 0), // TODO: Change
|
|
methods: vec![
|
|
Method {
|
|
name: "listInterfaces".to_owned(),
|
|
args: vec![],
|
|
ret: ty::array(ty::string()),
|
|
},
|
|
Method {
|
|
name: "release".to_owned(),
|
|
..default()
|
|
},
|
|
],
|
|
..default()
|
|
},
|
|
Interface {
|
|
name: "root".to_owned(),
|
|
version: (0, 1, 0),
|
|
methods: vec![
|
|
Method {
|
|
name: "listExtensions".to_owned(),
|
|
ret: ty::array(ty::string()),
|
|
..default()
|
|
},
|
|
Method {
|
|
name: "ping".to_owned(),
|
|
..default()
|
|
},
|
|
Method {
|
|
name: "getObjectById".to_owned(),
|
|
ret: ty::object(),
|
|
args: vec![("id".to_owned(), ty::uuid())],
|
|
},
|
|
Method {
|
|
name: "getObjectByName".to_owned(),
|
|
ret: ty::object(),
|
|
args: vec![("name".to_owned(), ty::string())],
|
|
},
|
|
],
|
|
..default()
|
|
},
|
|
],
|
|
..default()
|
|
},
|
|
extenstions: vec![Extension {
|
|
name: "assetdelivery".to_owned(),
|
|
version: (0, 1, 0),
|
|
module: Module {
|
|
interfaces: vec![Interface {
|
|
name: "assetdelivery".to_owned(),
|
|
version: (0, 1, 0),
|
|
events: vec![Method {
|
|
name: "loadAssets".to_owned(),
|
|
args: vec![("name".to_owned(), ty::string())],
|
|
..default()
|
|
}],
|
|
..default()
|
|
}],
|
|
types: vec![CustomType {
|
|
name: "asset".to_owned(),
|
|
kind: CustomTypeKind::Struct(CustomStruct {
|
|
fields: vec![
|
|
("id".to_owned(), ty::uuid()),
|
|
("name".to_owned(), ty::string()),
|
|
("data".to_owned(), ty::array(ty::u8())),
|
|
],
|
|
}),
|
|
}],
|
|
},
|
|
}],
|
|
}
|
|
}
|
|
|
|
fn default<D: Default>() -> D {
|
|
Default::default()
|
|
}
|