Add support to use IPFS gateway to read ipfs data
This makes caching of IPFS documents easier. Browsers should cache those by default
This commit is contained in:
parent
16141ed482
commit
61fe9add1b
@ -1,13 +1,14 @@
|
|||||||
const ipfsClient = require('ipfs-http-client');
|
const ipfsClient = require('ipfs-http-client');
|
||||||
const multihashes = require('multihashes');
|
const multihashes = require('multihashes');
|
||||||
|
const fetch = require('node-fetch');
|
||||||
|
|
||||||
class IPFS {
|
class IPFS {
|
||||||
constructor (config) {
|
constructor (config) {
|
||||||
if (!config) {
|
if (!config) {
|
||||||
config = { host: 'localhost', port: '5001', protocol: 'http' };
|
config = { host: 'localhost', port: '5001', protocol: 'http' };
|
||||||
}
|
}
|
||||||
this._ipfsAPI = ipfsClient(config);
|
|
||||||
this._config = config;
|
this._config = config;
|
||||||
|
this._ipfsAPI = ipfsClient(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
catAndMerge (data, deserialize) {
|
catAndMerge (data, deserialize) {
|
||||||
@ -38,7 +39,11 @@ class IPFS {
|
|||||||
if (hashData.hasOwnProperty('hashSize')) {
|
if (hashData.hasOwnProperty('hashSize')) {
|
||||||
ipfsHash = this.encodeHash(hashData);
|
ipfsHash = this.encodeHash(hashData);
|
||||||
}
|
}
|
||||||
return this._ipfsAPI.cat(ipfsHash);
|
if (this._config['gatewayUrl']) {
|
||||||
|
return fetch(`${this._config['gatewayUrl']}/${ipfsHash}`).then(r => r.text());
|
||||||
|
} else {
|
||||||
|
return this._ipfsAPI.cat(ipfsHash);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pin (hashData) {
|
pin (hashData) {
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
"ethers": "^4.0.29",
|
"ethers": "^4.0.29",
|
||||||
"ipfs-http-client": "^32.0.1",
|
"ipfs-http-client": "^32.0.1",
|
||||||
"kosmos-schemas": "^2.1.0",
|
"kosmos-schemas": "^2.1.0",
|
||||||
|
"node-fetch": "^2.6.0",
|
||||||
"tv4": "^1.3.0"
|
"tv4": "^1.3.0"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user