WIP coredump json upload
I need @paultag or someone to help guide me through passing the coredump around properly.
This commit is contained in:
@ -65,32 +65,30 @@ pub trait CoreDump: Clone {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Gather coredump and upload it to *public* cloud storage.
|
/// Gather coredump and upload it to *public* cloud storage.
|
||||||
async fn upload_coredump(&self) -> Result<String> {
|
async fn upload_coredump(&self, core_dump_info: &CoreDumpInfo) -> Result<String> {
|
||||||
let screenshot = self.screenshot().await?;
|
// (Re)Create the zoo client.
|
||||||
let cleaned = screenshot.trim_start_matches("data:image/png;base64,");
|
|
||||||
// Create the zoo client.
|
|
||||||
let mut zoo = kittycad::Client::new(self.token()?);
|
let mut zoo = kittycad::Client::new(self.token()?);
|
||||||
zoo.set_base_url(&self.base_api_url()?);
|
zoo.set_base_url(&self.base_api_url()?);
|
||||||
|
|
||||||
// Base64 decode the screenshot.
|
let json = serde_json::to_string_pretty(&core_dump_info).unwrap();
|
||||||
let data = base64::engine::general_purpose::STANDARD.decode(cleaned)?;
|
|
||||||
// Upload the screenshot.
|
// Upload the coredump.
|
||||||
let links = zoo
|
let result: Vec<String> = zoo
|
||||||
.meta()
|
.meta()
|
||||||
.create_debug_uploads(vec![kittycad::types::multipart::Attachment {
|
.create_debug_uploads(vec![kittycad::types::multipart::Attachment {
|
||||||
name: "".to_string(),
|
name: "".to_string(),
|
||||||
filename: Some("modeling-app/core-dump-screenshot.png".to_string()),
|
filename: Some(format!(r#"modeling-app/coredump-{}.json)"#, core_dump_info.id,)),
|
||||||
content_type: Some("file/json".to_string()),
|
content_type: Some("application/json".to_string()),
|
||||||
data,
|
data: json.to_vec(),
|
||||||
}])
|
}])
|
||||||
.await
|
.await?;
|
||||||
.map_err(|e| anyhow::anyhow!(e.to_string()))?;
|
|
||||||
|
|
||||||
if links.is_empty() {
|
if result.is_empty() {
|
||||||
anyhow::bail!("Failed to upload screenshot");
|
anyhow::bail!("Failed to upload coredump");
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(links[0].clone())
|
println!("{:?}", result);
|
||||||
|
Ok(result[0].clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Dump the app info.
|
/// Dump the app info.
|
||||||
@ -112,8 +110,8 @@ pub trait CoreDump: Clone {
|
|||||||
pool: self.pool()?,
|
pool: self.pool()?,
|
||||||
client_state,
|
client_state,
|
||||||
};
|
};
|
||||||
|
|
||||||
let coredump_url = screenshot_url.clone();
|
let coredump_url: String = self.upload_coredump(&core_dump_info).await?;
|
||||||
|
|
||||||
core_dump_info.set_github_issue_url(&screenshot_url, &coredump_url)?;
|
core_dump_info.set_github_issue_url(&screenshot_url, &coredump_url)?;
|
||||||
|
|
||||||
@ -171,8 +169,7 @@ impl CoreDumpInfo {
|
|||||||
|
|
||||||

|

|
||||||
"#,
|
"#,
|
||||||
screenshot_url,
|
screenshot_url, coredump_url
|
||||||
coredump_url
|
|
||||||
);
|
);
|
||||||
let urlencoded: String = form_urlencoded::byte_serialize(body.as_bytes()).collect();
|
let urlencoded: String = form_urlencoded::byte_serialize(body.as_bytes()).collect();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user