xdebug/xml/response/
context_get.rs1use quick_xml::de::from_str;
2use serde::{Deserialize, Serialize};
3use crate::xml::XdebugError;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub enum ContextGet {
7 Success(Success),
8 Error(Error),
9}
10
11#[derive(Debug, Serialize, Deserialize)]
12pub struct Success {
13 #[serde(rename = "@command")]
14 pub command: String,
15 #[serde(rename = "@transaction_id")]
16 pub transaction_id: i32,
17 #[serde(rename = "@context")]
18 pub context: i32,
19 pub property: Option<Vec<Property>>,
20}
21
22#[derive(Debug, Serialize, Deserialize)]
23pub struct Property {
24 #[serde(rename = "@name")]
25 pub name: Option<String>,
26 #[serde(rename = "@fullname")]
27 pub fullname: Option<String>,
28 #[serde(rename = "@classname")]
29 pub classname: Option<String>,
30 #[serde(rename = "@page")]
31 pub page: Option<i32>,
32 #[serde(rename = "@pagesize")]
33 pub pagesize: Option<i32>,
34 #[serde(rename = "@type")]
35 pub type_: String,
36 #[serde(rename = "@facet")]
37 pub facet: Option<String>,
38 #[serde(rename = "@size")]
39 pub size: Option<i32>,
40 #[serde(rename = "@children")]
41 pub children: Option<bool>,
42 #[serde(rename = "@numchildren")]
43 pub numchildren: Option<i32>,
44 #[serde(rename = "@key")]
45 pub key: Option<String>,
46 #[serde(rename = "@address")]
47 pub address: Option<String>,
48 #[serde(rename = "@encoding")]
49 pub encoding: Option<String>,
50 pub property: Option<Vec<Property>>,
51 #[serde(rename = "$text")]
52 pub content: Option<String>,
53}
54
55#[derive(Debug, Serialize, Deserialize)]
56pub struct Error {
57 #[serde(rename = "@command")]
58 pub command: String,
59 #[serde(rename = "@transaction_id")]
60 pub transaction_id: i32,
61 error: XdebugError,
62}
63
64impl ContextGet {
65 pub fn from_str(str: &str) -> ContextGet {
66 if let Ok(response) = from_str(str) {
67 return ContextGet::Success(response);
68 }
69
70 ContextGet::Error(from_str(str).unwrap())
71 }
72}