1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use curl::easy::Handler;
use curl::easy::WriteError;
use std::fmt::Debug;

/// A handler of Easy2
/// ```
/// use curl::easy::Easy2;
/// use async_curl::response_handler::ResponseHandler;
///
/// # fn main() {
/// let easy2 = Easy2::new(ResponseHandler::new());
///
/// println!("{:?}", easy2.get_ref());
/// # }
/// ```
#[derive(Debug, Clone, Default)]
pub struct ResponseHandler {
    data: Vec<u8>,
}

impl Handler for ResponseHandler {
    fn write(&mut self, data: &[u8]) -> Result<usize, WriteError> {
        self.data.extend_from_slice(data);
        Ok(data.len())
    }
}

impl ResponseHandler {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn get_data(self) -> Vec<u8> {
        self.data
    }
}