aboutsummaryrefslogtreecommitdiffstats
path: root/src/api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api.rs')
-rw-r--r--src/api.rs32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/api.rs b/src/api.rs
index c31ea8f..826eaf2 100644
--- a/src/api.rs
+++ b/src/api.rs
@@ -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)
}
}