diff options
Diffstat (limited to 'src/api.rs')
-rw-r--r-- | src/api.rs | 32 |
1 files changed, 20 insertions, 12 deletions
@@ -16,8 +16,16 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -use reqwest; +use reqwest::{ + self, + header::{ + HeaderMap, + HeaderValue, + }, + Client, +}; use crate::station::{Station, StationContainer}; +use crate::error::ApiResult; const API_BASE: &'static str = "https://oslobysykkel.no/api/v1"; @@ -30,23 +38,23 @@ pub struct Api { } impl Api { - pub fn new(api_key: String) -> Api { - let mut hdrs = reqwest::header::HeaderMap::new(); - hdrs.insert("client-identifier", reqwest::header::HeaderValue::from_str(&api_key).unwrap()); + pub fn new(api_key: String) -> ApiResult<Api> { + let mut hdrs = HeaderMap::new(); + hdrs.insert("client-identifier", HeaderValue::from_str(&api_key)?); - let client = reqwest::Client::builder() + let client = Client::builder() .default_headers(hdrs) - .build().unwrap(); + .build()?; - Api { client } + Ok(Api { client }) } - pub fn stations(&self) -> Vec<Station> { + pub fn stations(&self) -> ApiResult<Vec<Station>> { let response_json = self.client.get(&url_for("stations")) - .send().unwrap() - .text().unwrap(); + .send()? + .text()?; - let v: StationContainer = serde_json::from_str(&response_json).unwrap(); - v.stations + let v: StationContainer = serde_json::from_str(&response_json)?; + Ok(v.stations) } } |