rsolr 0.3.2

A Solr client for Rust.
Documentation
use http::header::CONTENT_TYPE;
use reqwest::blocking::{Body, Client as ReqwestClient, Response};
use reqwest::Error;
use cloneable_file::CloneableFile;

#[cfg(test)]
use mockall::automock;
use serde_json::Value;

#[allow(dead_code)]
pub struct HttpClient {
    reqwest_client: ReqwestClient,
}

#[cfg_attr(test, automock)]
impl HttpClient {
    #[allow(dead_code)]
    pub fn new() -> Self {
        Self{ reqwest_client: ReqwestClient::new() }
    }

    #[allow(dead_code)]
    pub fn get(&self, query : &str ) -> Result<Response, Error> {
        self.reqwest_client
            .get(query)
            .send()
    }

    #[allow(dead_code)]
    pub fn post_json<'a>(&self, query : &str, body: Option<&'a Value>) -> Result<Response, Error> {
        let request = self.reqwest_client.post(query);
        match body {
            Some(body) => request
                .header(CONTENT_TYPE, "application/json")
                .json::<Value>(body).send(),
            None => request.send()
        }
    }

    #[allow(dead_code)]
    pub fn post_file_reader<'a>(&self, query : &str, file: CloneableFile) -> Result<Response, Error> {
        let length = file.metadata().unwrap().len();
        let body = Body::sized(file, length);
        let request = self.reqwest_client.post(query);
        request
            .header(CONTENT_TYPE, "text/csv")
            .body(body)
            .send()
    }
}