use std::convert::TryFrom;
use serde::Deserialize;
use serde_json::Value;
use wiremock::ResponseTemplate;
use super::{body_file::BodyFile, ResponseAppender};
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct BodyDto {
pub body: Option<String>,
pub json_body: Option<Value>,
pub body_file_name: Option<String>,
}
impl ResponseAppender for BodyDto {
fn add(&self, mut resp: ResponseTemplate) -> ResponseTemplate {
if let Some(text) = self.body.as_ref() {
resp = resp.set_body_string(text);
}
if let Some(json) = self.json_body.as_ref() {
resp = resp.set_body_json(json)
}
if let Ok(body_file) = BodyFile::try_from(self.body_file_name.as_ref()) {
resp = body_file.add(resp)
}
resp
}
}