Add IPFS service
Add the `ipfs-api` JS library and a service using the browserified version of it. The service has functions for storing and reading file contests.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import Ember from 'ember';
|
||||
import ipfsAPI from 'npm:ipfs-api';
|
||||
import config from 'kredits-web/config/environment';
|
||||
|
||||
export default Ember.Service.extend({
|
||||
|
||||
ipfsInstance: null,
|
||||
|
||||
ipfs: function() {
|
||||
if (this.get('ipfsInstance')) {
|
||||
return this.get('ipfsInstance');
|
||||
}
|
||||
let ipfs = ipfsAPI(config.ipfs);
|
||||
this.set('ipfsInstance', ipfs);
|
||||
window.ipfs = ipfs;
|
||||
return ipfs;
|
||||
}.property('ipfsInstance'),
|
||||
|
||||
storeFile(content) {
|
||||
let ipfs = this.get('ipfs');
|
||||
return ipfs.add(new ipfs.Buffer(content)).then((res) => {
|
||||
return res[0].hash;
|
||||
});
|
||||
},
|
||||
|
||||
getFile(hash) {
|
||||
return this.get('ipfs').cat(hash, { buffer: true }, (err, res) => {
|
||||
return res.toString();
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
@@ -7,6 +7,8 @@ import kreditsContracts from 'npm:kredits-contracts';
|
||||
|
||||
export default Ember.Service.extend({
|
||||
|
||||
ipfs: Ember.inject.service(),
|
||||
|
||||
web3Instance: null,
|
||||
web3Provided: false, // Web3 provided (using Mist Browser, Metamask et al.)
|
||||
|
||||
|
||||
@@ -22,7 +22,12 @@ module.exports = function(environment) {
|
||||
},
|
||||
|
||||
web3ProviderUrl: "https://parity.kosmos.org:8545",
|
||||
ethereumChain: "testnet"
|
||||
ethereumChain: "testnet",
|
||||
ipfs: {
|
||||
host: 'localhost',
|
||||
port: '5001',
|
||||
protocol: 'http'
|
||||
}
|
||||
};
|
||||
|
||||
if (environment === 'development') {
|
||||
|
||||
+3
-2
@@ -39,9 +39,10 @@
|
||||
"ember-export-application-global": "^1.0.5",
|
||||
"ember-load-initializers": "^0.5.1",
|
||||
"ember-resolver": "^2.0.3",
|
||||
"ipfs-api": "^12.1.7",
|
||||
"kredits-contracts": "67P/kredits-contracts",
|
||||
"loader.js": "^4.0.10",
|
||||
"web3": "^0.18.2",
|
||||
"kredits-contracts": "67P/kredits-contracts"
|
||||
"web3": "^0.18.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.12.0"
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import { moduleFor, test } from 'ember-qunit';
|
||||
|
||||
moduleFor('service:ipfs', 'Unit | Service | ipfs', {
|
||||
// Specify the other units that are required for this test.
|
||||
// needs: ['service:foo']
|
||||
});
|
||||
|
||||
// Replace this with your real tests.
|
||||
test('it exists', function(assert) {
|
||||
let service = this.subject();
|
||||
assert.ok(service);
|
||||
});
|
||||
Reference in New Issue
Block a user