pub mod parse;
use std::io::{Read, Result as IoResult};
use serde::de::DeserializeOwned;
use elastic_reqwest::ParseResponse;
use elastic_reqwest::res::parse;
use reqwest::Response as RawResponse;
use error::*;
use client::IntoResponse;
use self::parse::IsOk;
pub use elastic_reqwest::res::{SearchResponseOf, GetResponseOf, AggregationIterator, Aggregations, Hit, Hits, Shards, CommandResponse, IndexResponse, PingResponse, BulkResponse,
BulkErrorsResponse, BulkItem, BulkItems, BulkItemError, BulkAction};
pub struct ResponseBuilder(HttpResponse);
impl ResponseBuilder {
pub fn status(&self) -> u16 {
self.0.status()
}
#[deprecated(note = "use `into_raw`")]
pub fn raw(self) -> HttpResponse {
self.into_raw()
}
pub fn into_raw(self) -> HttpResponse {
self.0
}
fn reqwest_response(self) -> RawResponse {
self.into_raw().0
}
pub fn into_response<T>(self) -> Result<T>
where T: IsOk + DeserializeOwned
{
parse()
.from_response(self.reqwest_response())
.map_err(Into::into)
}
}
pub type SearchResponse<T> = SearchResponseOf<Hit<T>>;
pub type GetResponse<T> = GetResponseOf<T>;
pub struct HttpResponse(RawResponse);
impl HttpResponse {
pub fn status(&self) -> u16 {
self.0.status().to_u16()
}
}
impl Read for HttpResponse {
fn read(&mut self, buf: &mut [u8]) -> IoResult<usize> {
self.0.read(buf)
}
}
impl Into<HttpResponse> for IntoResponse {
fn into(self) -> HttpResponse {
HttpResponse(self.0)
}
}
impl Into<ResponseBuilder> for IntoResponse {
fn into(self) -> ResponseBuilder {
ResponseBuilder(self.into())
}
}