xdebug/xml/response/
context_get.rs

1use 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}