summaryrefslogtreecommitdiff
path: root/src/interpreter.rs
diff options
context:
space:
mode:
authorShaun Taheri <github@taheris.co.uk>2016-09-29 16:55:47 +0200
committerGitHub <noreply@github.com>2016-09-29 16:55:47 +0200
commita993b143fec9dee763366eba36681a276c4d47e7 (patch)
tree8d549735db8e9cd8c221999eb11d69b1cded38c8 /src/interpreter.rs
parent484e98981f5ddbf61a9e4ca6190c9f2c2fcdec4c (diff)
parentb4d263c28fbc408d6dc2a437bd4a4affd5b6072e (diff)
downloadrvi_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.rs20
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()));