diff options
author | Shaun Taheri <github@taheris.co.uk> | 2016-09-29 16:55:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-29 16:55:47 +0200 |
commit | a993b143fec9dee763366eba36681a276c4d47e7 (patch) | |
tree | 8d549735db8e9cd8c221999eb11d69b1cded38c8 /src/interpreter.rs | |
parent | 484e98981f5ddbf61a9e4ca6190c9f2c2fcdec4c (diff) | |
parent | b4d263c28fbc408d6dc2a437bd4a4affd5b6072e (diff) | |
download | rvi_sota_client-a993b143fec9dee763366eba36681a276c4d47e7.tar.gz |
Merge pull request #126 from advancedtelematic/feat/pro-1374/log-http-body-error
Return the HTTP Body when available
Diffstat (limited to 'src/interpreter.rs')
-rw-r--r-- | src/interpreter.rs | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/interpreter.rs b/src/interpreter.rs index 75e6e8b..00ad37c 100644 --- a/src/interpreter.rs +++ b/src/interpreter.rs @@ -3,9 +3,8 @@ use chan::{Sender, Receiver}; use std; use std::borrow::Cow; -use datatype::{AccessToken, Auth, ClientId, ClientSecret, Command, Config, - Error, Event, Package, UpdateReport, UpdateRequestStatus as Status, - UpdateResultCode}; +use datatype::{AccessToken, Auth, ClientCredentials, Command, Config, Error, Event, + Package, UpdateReport, UpdateRequestStatus as Status, UpdateResultCode}; use gateway::Interpret; use http::{AuthClient, Client}; use oauth2::authenticate; @@ -38,13 +37,12 @@ impl Interpreter<Event, Command> for EventInterpreter { info!("Event received: {}", event); match event { Event::Authenticated => { - ctx.send(Command::SendSystemInfo); - if self.package_manager != PackageManager::Off { self.package_manager.installed_packages().map(|packages| { ctx.send(Command::SendInstalledPackages(packages)); }).unwrap_or_else(|err| error!("couldn't send a list of packages: {}", err)); } + ctx.send(Command::SendSystemInfo); } Event::NotAuthenticated => { @@ -141,24 +139,22 @@ impl<'t> Interpreter<Interpret, Event> for GlobalInterpreter<'t> { etx.send(ev.clone()); response_ev = Some(ev); } - info!("Interpreter finished."); } - Err(Error::Authorization(_)) => { + Err(Error::HttpAuth(_)) => { let ev = Event::NotAuthenticated; etx.send(ev.clone()); response_ev = Some(ev); - error!("Interpreter authentication failed"); } Err(err) => { let ev = Event::Error(format!("{}", err)); etx.send(ev.clone()); response_ev = Some(ev); - error!("Interpreter failed: {}", err); } } + info!("Interpreter finished."); let ev = response_ev.expect("no response event to send back"); interpret.response_tx.map(|tx| tx.lock().unwrap().send(ev)); } @@ -250,8 +246,10 @@ impl<'t> GlobalInterpreter<'t> { match cmd { Command::Authenticate(_) => { let config = self.config.auth.clone().expect("trying to authenticate without auth config"); - self.set_client(Auth::Credentials(ClientId(config.client_id), - ClientSecret(config.client_secret))); + self.set_client(Auth::Credentials(ClientCredentials { + client_id: config.client_id, + client_secret: config.client_secret, + })); let server = config.server.join("/token").expect("couldn't build authentication url"); let token = try!(authenticate(server, self.http_client.as_ref())); self.set_client(Auth::Token(token.clone())); |