Commit bd0a6eac authored by Alex Beregszaszi's avatar Alex Beregszaszi

Publish metadata and contract sources

parent 922c533f
/* global alert, confirm, prompt, FileReader, Option, Worker, chrome */ /* global alert, confirm, prompt, FileReader, Option, Worker, chrome */
'use strict' 'use strict'
var async = require('async')
var $ = require('jquery') var $ = require('jquery')
var base64 = require('js-base64').Base64 var base64 = require('js-base64').Base64
var swarmgw = require('swarmgw') var swarmgw = require('swarmgw')
...@@ -657,13 +658,53 @@ var run = function () { ...@@ -657,13 +658,53 @@ var run = function () {
}) })
} }
function publishOnSwarm (contract, cb) {
// gather list of files to publish
var sources = []
sources.push({
content: contract.metadata,
hash: contract.metadataHash
})
var metadata
try {
metadata = JSON.parse(contract.metadata)
} catch (e) {
return cb(e)
}
if (metadata === undefined) {
return cb('No metadata')
}
Object.keys(metadata.sources).forEach(function (fileName) {
// find hash
var hash
try {
hash = metadata.sources[fileName].urls[0].match('bzzr://(.+)')[1]
} catch (e) {
return cb('Metadata inconsistency')
}
sources.push({
content: files.get(fileName),
hash: hash
})
})
// publish the list of sources in order, fail if any failed
async.eachSeries(sources, function (item, cb) {
swarmVerifiedPublish(item.content, item.hash, cb)
}, cb)
}
udapp.event.register('publishContract', this, function (contract) { udapp.event.register('publishContract', this, function (contract) {
console.log('Publish contract...', contract) publishOnSwarm(contract, function (err) {
swarmVerifiedPublish(contract.metadata, contract.metadataHash, function (err) {
if (err) { if (err) {
alert('Failed to publish metadata: ' + err) alert('Failed to publish metadata: ' + err)
} else { } else {
alert('Published metadata') alert('Metadata published successfully')
} }
}) })
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment