Inject parity script to all dapps // Expand dapps to any ZIP file (#7260)
* Inject Parity script to all HTML dapps pages * Small glitch * Add injection test * Add Special GHH commit value for serving ZIP files as DAPPS * Refactor GithubDapp fetcher * PR Grumbles
This commit is contained in:
committed by
Svyatoslav Nikolsky
parent
f3297dd44a
commit
82d7fc54b3
@@ -150,6 +150,9 @@ impl<F: Fetch + 'static> HashFetch for Client<F> {
|
||||
URLHintResult::Dapp(dapp) => {
|
||||
dapp.url()
|
||||
},
|
||||
URLHintResult::GithubDapp(content) => {
|
||||
content.url
|
||||
},
|
||||
URLHintResult::Content(content) => {
|
||||
content.url
|
||||
},
|
||||
|
||||
@@ -32,6 +32,10 @@ use bytes::Bytes;
|
||||
pub type BoxFuture<A, B> = Box<Future<Item = A, Error = B> + Send>;
|
||||
|
||||
const COMMIT_LEN: usize = 20;
|
||||
/// GithubHint entries with commit set as `0x0..01` should be treated
|
||||
/// as Github Dapp, downloadable zip files, than can be extracted, containing
|
||||
/// the manifest.json file along with the dapp
|
||||
static GITHUB_DAPP_COMMIT: &[u8; COMMIT_LEN] = &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
|
||||
|
||||
/// RAW Contract interface.
|
||||
/// Should execute transaction using current blockchain state.
|
||||
@@ -93,6 +97,8 @@ pub struct Content {
|
||||
pub enum URLHintResult {
|
||||
/// Dapp
|
||||
Dapp(GithubApp),
|
||||
/// GithubDapp
|
||||
GithubDapp(Content),
|
||||
/// Content
|
||||
Content(Content),
|
||||
}
|
||||
@@ -122,6 +128,15 @@ impl URLHintContract {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_urlhint_content(account_slash_repo: String, owner: Address) -> Content {
|
||||
let mime = guess_mime_type(&account_slash_repo).unwrap_or(mime::APPLICATION_JSON);
|
||||
Content {
|
||||
url: account_slash_repo,
|
||||
mime,
|
||||
owner,
|
||||
}
|
||||
}
|
||||
|
||||
fn decode_urlhint_output(output: (String, ::bigint::hash::H160, Address)) -> Option<URLHintResult> {
|
||||
let (account_slash_repo, commit, owner) = output;
|
||||
|
||||
@@ -130,13 +145,15 @@ fn decode_urlhint_output(output: (String, ::bigint::hash::H160, Address)) -> Opt
|
||||
}
|
||||
|
||||
let commit = GithubApp::commit(&commit);
|
||||
|
||||
if commit == Some(Default::default()) {
|
||||
let mime = guess_mime_type(&account_slash_repo).unwrap_or(mime::APPLICATION_JSON);
|
||||
return Some(URLHintResult::Content(Content {
|
||||
url: account_slash_repo,
|
||||
mime: mime,
|
||||
owner: owner,
|
||||
}));
|
||||
let content = get_urlhint_content(account_slash_repo, owner);
|
||||
return Some(URLHintResult::Content(content));
|
||||
}
|
||||
|
||||
if commit == Some(*GITHUB_DAPP_COMMIT) {
|
||||
let content = get_urlhint_content(account_slash_repo, owner);
|
||||
return Some(URLHintResult::GithubDapp(content));
|
||||
}
|
||||
|
||||
let (account, repo) = {
|
||||
|
||||
Reference in New Issue
Block a user