file_fetcher/
http.rs

1// @Author: Lashermes Ronan <ronan>
2// @Date:   25-07-2017
3// @Email:  ronan.lashermes@inria.fr
4// @Last modified by:   ronan
5// @Last modified time: 25-07-2017
6// @License: MIT
7
8
9use reqwest;
10// use url::Url;
11use reqwest::Url;
12use serde::de::DeserializeOwned;
13
14use crate::errors::*;
15use std::io::Read;
16
17///Read url with http get and give resulting bytes
18pub fn open_bytes(url: Url) -> Result<Vec<u8>> {
19    let mut result = Vec::new();
20    reqwest::get(url)?.read_to_end(&mut result)?;
21    Ok(result)
22}
23
24///Read url with http get and give resulting reader
25pub fn open(url: Url) -> Result<Box<dyn Read>> {
26    Ok(Box::new(reqwest::get(url)?))
27}
28
29///Read url and get json struct
30pub fn open_json<T: DeserializeOwned>(url: Url) -> Result<T> {
31    Ok(reqwest::get(url)?.json::<T>()?)
32}
33
34#[test]
35fn test_file_fetch() {
36    assert!(reqwest::get("https://gitlab.com/Artefaritaj/file-fetcher/raw/master/src/http.rs").is_ok())
37}