1
0
Fork 0

Fix errorhandling in habitask

This commit is contained in:
Malte Brandy 2018-07-29 23:52:09 +02:00
parent 29d81e40c3
commit 2a382ebfee
No known key found for this signature in database
GPG key ID: 226A2D41EF5378C9
3 changed files with 43 additions and 27 deletions

View file

@ -254,6 +254,7 @@ name = "habitask"
version = "0.1.0"
dependencies = [
"config 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",

View file

@ -1567,10 +1567,11 @@ rec {
num_cpus_1_8_0.default = true;
}) [ futures_0_1_23_features num_cpus_1_8_0_features ];
habitask_0_1_0 = { features?(habitask_0_1_0_features {}) }: habitask_0_1_0_ {
dependencies = mapFeatures features ([ config_0_9_0 hyper_0_11_27 reqwest_0_8_6 serde_1_0_70 serde_derive_1_0_70 serde_json_1_0_24 task_hookrs_0_5_0 ]);
dependencies = mapFeatures features ([ config_0_9_0 error_chain_0_11_0 hyper_0_11_27 reqwest_0_8_6 serde_1_0_70 serde_derive_1_0_70 serde_json_1_0_24 task_hookrs_0_5_0 ]);
};
habitask_0_1_0_features = f: updateFeatures f (rec {
config_0_9_0.default = true;
error_chain_0_11_0.default = true;
habitask_0_1_0.default = (f.habitask_0_1_0.default or true);
hyper_0_11_27.default = true;
reqwest_0_8_6.default = true;
@ -1578,7 +1579,7 @@ rec {
serde_derive_1_0_70.default = true;
serde_json_1_0_24.default = true;
task_hookrs_0_5_0.default = true;
}) [ config_0_9_0_features hyper_0_11_27_features reqwest_0_8_6_features serde_1_0_70_features serde_derive_1_0_70_features serde_json_1_0_24_features task_hookrs_0_5_0_features ];
}) [ config_0_9_0_features error_chain_0_11_0_features hyper_0_11_27_features reqwest_0_8_6_features serde_1_0_70_features serde_derive_1_0_70_features serde_json_1_0_24_features task_hookrs_0_5_0_features ];
httparse_1_3_2 = { features?(httparse_1_3_2_features {}) }: httparse_1_3_2_ {
features = mkFeatures (features.httparse_1_3_2 or {});
};

View file

@ -22,6 +22,10 @@ use config::{Config, Environment};
error_chain! {
foreign_links {
Io(::std::io::Error);
Reqwust(::reqwest::Error);
Utf8(::std::str::Utf8Error);
JSON(::serde_json::Error);
Config(::config::ConfigError);
}
}
@ -74,10 +78,10 @@ impl Habitask {
let mut s = Config::new();
s.merge(Environment::with_prefix("habitask"))?;
let s = s.try_into()?;
Habitask {
Ok(Habitask {
client: Client::new(),
settings: s,
}
})
}
fn login(&self, mut builder: RequestBuilder) -> RequestBuilder {
@ -95,7 +99,7 @@ impl Habitask {
fn make_todo(&self, name: &str, prio: &str, tasks: Vec<Task>) -> Result<()> {
if tasks.len() == 0 {
return;
return Ok(());
}
let Todo { id, .. } = self.create_todo(name, prio)?;
let mut checklist: Vec<Item> = Vec::new();
@ -112,40 +116,34 @@ impl Habitask {
fn create_todo(&self, name: &str, prio: &str) -> Result<Todo> {
let map = vec![("text", name), ("type", "todo"), ("priority", prio)];
self.post("https://habitica.com/api/v3/tasks/user")
.json(&map)
.send()?
.json::<Response>()?
.data
Ok(
self.post("https://habitica.com/api/v3/tasks/user")
.json(&map)
.send()?
.json::<Response>()?
.data,
)
}
fn add_item(&self, id: &str, item: &str) -> Result<Todo> {
let map = vec![("text", item)];
let url = format!("https://habitica.com/api/v3/tasks/{}/checklist", id);
Ok(self.post(&url)
.json(&map)
.send()?
.json::<Response>()?
.data)
Ok(self.post(&url).json(&map).send()?.json::<Response>()?.data)
}
fn check_item(&self, id: &str, item: &str) -> Result<()>{
fn check_item(&self, id: &str, item: &str) -> Result<()> {
let url = format!(
"https://habitica.com/api/v3/tasks/{}/checklist/{}/score",
id,
item
);
self.post(&url)
.json(&Vec::<(&str, &str)>::new())
.send()?;
self.post(&url).json(&Vec::<(&str, &str)>::new()).send()?;
Ok(())
}
fn score_task(&self, id: &str) -> Result<()>{
fn score_task(&self, id: &str) -> Result<()> {
let url = format!("https://habitica.com/api/v3/tasks/{}/score/up", id);
self.post(&url)
.json(&Vec::<(&str, &str)>::new())
.send();
self.post(&url).json(&Vec::<(&str, &str)>::new()).send()?;
Ok(())
}
}
@ -180,14 +178,30 @@ fn main() -> Result<()> {
blink();
}
habitask.make_todo("Routinen erledigt!", "0.1", routines)?;
habitask.make_todo("Herausforderungen bezwungen!", "1", tasks)?;
habitask.make_todo(
"Herausforderungen bezwungen!",
"1",
tasks,
)?;
habitask.make_todo(
"Ein paar Tage alte Herausforderungen bezwungen!",
"1.5",
a_little_old,
)?;
habitask.make_todo("Einige Wochen alte Herausforderungen bezwungen!", "2", old)?;
habitask.make_todo("Monate alte Herausforderungen bezwungen!", "2", very_old)?;
habitask.make_todo("Uralte Herausforderungen bezwungen!", "2", crazy_old)?;
habitask.make_todo(
"Einige Wochen alte Herausforderungen bezwungen!",
"2",
old,
)?;
habitask.make_todo(
"Monate alte Herausforderungen bezwungen!",
"2",
very_old,
)?;
habitask.make_todo(
"Uralte Herausforderungen bezwungen!",
"2",
crazy_old,
)?;
Ok(())
}