Fetching from github
This commit is contained in:
parent
61879ef144
commit
2a549386a6
@ -19,7 +19,7 @@
|
|||||||
//! Uses `URLHint` to resolve addresses into Dapps bundle file location.
|
//! Uses `URLHint` to resolve addresses into Dapps bundle file location.
|
||||||
|
|
||||||
use zip;
|
use zip;
|
||||||
use std::{fs, env};
|
use std::{fs, env, fmt};
|
||||||
use std::io::{self, Read, Write};
|
use std::io::{self, Read, Write};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -146,6 +146,23 @@ pub enum ValidationError {
|
|||||||
HashMismatch { expected: H256, got: H256, },
|
HashMismatch { expected: H256, got: H256, },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for ValidationError {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||||||
|
match *self {
|
||||||
|
ValidationError::Io(ref io) => write!(f, "Unexpected IO error occured: {:?}", io),
|
||||||
|
ValidationError::Zip(ref zip) => write!(f, "Unable to read ZIP archive: {:?}", zip),
|
||||||
|
ValidationError::InvalidDappId => write!(f, "Dapp ID is invalid. It should be 32 bytes hash of content."),
|
||||||
|
ValidationError::ManifestNotFound => write!(f, "Downloaded Dapp bundle did not contain valid manifest.json file."),
|
||||||
|
ValidationError::ManifestSerialization(ref err) => {
|
||||||
|
write!(f, "There was an error during Dapp Manifest serialization: {:?}", err)
|
||||||
|
},
|
||||||
|
ValidationError::HashMismatch { ref expected, ref got } => {
|
||||||
|
write!(f, "Hash of downloaded content did not match. Expected:{:?}, Got:{:?}.", expected, got)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<io::Error> for ValidationError {
|
impl From<io::Error> for ValidationError {
|
||||||
fn from(err: io::Error) -> Self {
|
fn from(err: io::Error) -> Self {
|
||||||
ValidationError::Io(err)
|
ValidationError::Io(err)
|
||||||
|
@ -33,8 +33,7 @@ pub struct GithubApp {
|
|||||||
|
|
||||||
impl GithubApp {
|
impl GithubApp {
|
||||||
pub fn url(&self) -> String {
|
pub fn url(&self) -> String {
|
||||||
// format!("https://github.com/{}/{}/archive/{}.zip", self.account, self.repo, self.commit.to_hex())
|
format!("https://github.com/{}/{}/archive/{}.zip", self.account, self.repo, self.commit.to_hex())
|
||||||
format!("http://github.todr.me/{}/{}/zip/{}", self.account, self.repo, self.commit.to_hex())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn commit(bytes: &[u8]) -> Option<[u8;COMMIT_LEN]> {
|
fn commit(bytes: &[u8]) -> Option<[u8;COMMIT_LEN]> {
|
||||||
|
@ -57,7 +57,7 @@ impl Client {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn close(mut self) {
|
pub fn close(self) {
|
||||||
self.http_client.close();
|
self.http_client.close();
|
||||||
self.https_client.close();
|
self.https_client.close();
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ enum FetchState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait DappHandler {
|
pub trait DappHandler {
|
||||||
type Error: fmt::Debug;
|
type Error: fmt::Debug + fmt::Display;
|
||||||
|
|
||||||
fn validate_and_install(&self, app: PathBuf) -> Result<Manifest, Self::Error>;
|
fn validate_and_install(&self, app: PathBuf) -> Result<Manifest, Self::Error>;
|
||||||
fn done(&self, Option<&Manifest>);
|
fn done(&self, Option<&Manifest>);
|
||||||
@ -165,7 +165,7 @@ impl<H: DappHandler> server::Handler<HttpStream> for AppFetcherHandler<H> {
|
|||||||
trace!(target: "dapps", "Error while validating dapp: {:?}", e);
|
trace!(target: "dapps", "Error while validating dapp: {:?}", e);
|
||||||
FetchState::Error(ContentHandler::html(
|
FetchState::Error(ContentHandler::html(
|
||||||
StatusCode::BadGateway,
|
StatusCode::BadGateway,
|
||||||
format!("<h1>Downloaded bundle does not contain valid app.</h1><pre>{:?}</pre>", e),
|
format!("<h1>Downloaded bundle does not contain valid app.</h1><pre>{}</pre>", e),
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
Ok(manifest) => FetchState::Done(manifest)
|
Ok(manifest) => FetchState::Done(manifest)
|
||||||
|
@ -61,6 +61,8 @@ pub fn setup_log(config: &Config) -> Result<Arc<RotatingLogger>, String> {
|
|||||||
let mut builder = LogBuilder::new();
|
let mut builder = LogBuilder::new();
|
||||||
// Disable ws info logging by default.
|
// Disable ws info logging by default.
|
||||||
builder.filter(Some("ws"), LogLevelFilter::Warn);
|
builder.filter(Some("ws"), LogLevelFilter::Warn);
|
||||||
|
// Disable rustls info logging by default.
|
||||||
|
builder.filter(Some("rustls"), LogLevelFilter::Warn);
|
||||||
builder.filter(None, LogLevelFilter::Info);
|
builder.filter(None, LogLevelFilter::Info);
|
||||||
|
|
||||||
if env::var("RUST_LOG").is_ok() {
|
if env::var("RUST_LOG").is_ok() {
|
||||||
|
Loading…
Reference in New Issue
Block a user