DESIGN doc, stub out /write endpoint

This commit is contained in:
Lucien Greathouse
2017-12-20 22:00:01 -08:00
parent 6ee9a48e20
commit 0f78eb933a
3 changed files with 36 additions and 2 deletions

20
DESIGN.md Normal file
View File

@@ -0,0 +1,20 @@
# Rojo Design
This is a super rough draft that I'm trying to use to lay out of my thoughts.
## API
### POST `/read`
Accepts a `Vec<Route>` of items to read.
Returns `Vec<Option<RbxItem>>`, in the same order as the request.
### POST `/write`
Accepts a `Vec<{ Route, RbxItem }>` of items to write.
I imagine that the `Name` attribute of the top-level `RbxItem` would be ignored in favor of the route name?
## CLI
### Transform Plugins
## Roblox Studio Plugin

View File

@@ -1,6 +1,6 @@
use std::collections::HashMap;
#[derive(Debug, Serialize)]
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RbxItem {
pub name: String,
@@ -9,7 +9,7 @@ pub struct RbxItem {
pub properties: HashMap<String, RbxValue>,
}
#[derive(Debug, Serialize)]
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", tag = "type")]
pub enum RbxValue {
String {

View File

@@ -40,6 +40,13 @@ struct ChangesResult<'a> {
current_time: f64,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
struct WriteSpecifier {
route: String,
item: RbxItem,
}
fn json<T: serde::Serialize>(value: T) -> rouille::Response {
let data = serde_json::to_string(&value).unwrap();
rouille::Response::from_data("application/json", data)
@@ -181,6 +188,13 @@ pub fn start(config: Config, project: Project, vfs: Arc<Mutex<Vfs>>) {
},
(POST) (/write) => {
let _plugin_chain = PLUGIN_CHAIN.lock().unwrap();
let _write_request: Vec<WriteSpecifier> = match read_json(&request) {
Some(v) => v,
None => return rouille::Response::empty_400(),
};
rouille::Response::empty_404()
},