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::default() }