smartcar 1.1.0

The Rust SDK for Smartcar API
Documentation
use serde::Serialize;
use serde_json::Value;

use crate::error::Error;

#[derive(Serialize, Debug)]
pub(crate) struct BatchRequestPath {
    pub(crate) path: String,
}

#[derive(Serialize, Debug)]
pub(crate) struct BatchRequestBody {
    pub(crate) requests: Vec<BatchRequestPath>,
}

impl BatchRequestBody {
    pub fn add(&mut self, path: String) {
        self.requests.push(BatchRequestPath { path });
    }
}

pub(crate) fn build_batch_request_body(paths: Vec<String>) -> Result<Value, Error> {
    let mut batch_request_body = BatchRequestBody {
        requests: Vec::new(),
    };
    paths
        .iter()
        .for_each(|path| batch_request_body.add(path.to_string()));

    Ok(serde_json::to_value(&batch_request_body)?)
}