mirror of https://gitlab.com/ecentrics/concordia
Apostolos Fanakis
4 years ago
7 changed files with 80 additions and 11 deletions
@ -0,0 +1,50 @@ |
|||
import unirest from 'unirest'; |
|||
import { |
|||
contractsProviderHost, |
|||
contractsProviderPort, |
|||
contractsVersionHash, |
|||
} from 'concordia-shared/src/environment/interpolated/contractsProvider'; |
|||
import { pinnerApiHost, pinnerApiPort } from 'concordia-shared/src/environment/interpolated/pinner'; |
|||
import { FORUM_CONTRACT } from 'concordia-shared/src/constants/contracts/ContractNames'; |
|||
|
|||
function getContractsDownloadRequest() { |
|||
const HOST = pinnerApiHost; |
|||
const PORT = pinnerApiPort; |
|||
|
|||
return unirest( |
|||
'GET', |
|||
`http://${contractsProviderHost}:${contractsProviderPort}/contracts/${contractsVersionHash}`, |
|||
).headers({ |
|||
'Access-Control-Allow-Origin': `${HOST}:${PORT}`, |
|||
'Access-Control-Allow-Credentials': 'true', |
|||
}); |
|||
} |
|||
|
|||
const validateRemoteContracts = (remoteContracts) => { |
|||
if (!remoteContracts |
|||
.map((remoteContract) => remoteContract.contractName) |
|||
.includes(FORUM_CONTRACT)) { |
|||
throw new Error('Forum contract is missing from artifacts.'); |
|||
} |
|||
}; |
|||
|
|||
const downloadContractArtifacts = () => { |
|||
const request = getContractsDownloadRequest(); |
|||
|
|||
return new Promise((resolve, reject) => request |
|||
.end((response) => { |
|||
if (response.error) { |
|||
reject(new Error(`Remote contract artifacts download request failed!\n${response.error}`)); |
|||
} |
|||
|
|||
resolve(response.raw_body); |
|||
})).then((contractsRawData) => { |
|||
const remoteContracts = JSON.parse(contractsRawData); |
|||
|
|||
validateRemoteContracts(remoteContracts); |
|||
|
|||
return remoteContracts; |
|||
}); |
|||
}; |
|||
|
|||
export default downloadContractArtifacts; |
@ -1,12 +1,15 @@ |
|||
const { |
|||
pinner: { |
|||
host: PINNER_API_HOST_DEFAULT, |
|||
port: PINNER_API_PORT_DEFAULT, |
|||
}, |
|||
} = require('../../constants/configuration/defaults'); |
|||
const { pinnerApiPortEnv } = require('../pinnerEnv'); |
|||
const { pinnerApiHostEnv, pinnerApiPortEnv } = require('../pinnerEnv'); |
|||
|
|||
const pinnerApiHost = pinnerApiHostEnv || PINNER_API_HOST_DEFAULT; |
|||
const pinnerApiPort = pinnerApiPortEnv || PINNER_API_PORT_DEFAULT; |
|||
|
|||
module.exports = { |
|||
pinnerApiHost, |
|||
pinnerApiPort, |
|||
}; |
|||
|
@ -1,7 +1,9 @@ |
|||
// Depending on the package user (app in contrast to any of the other packages) the env var names should either include
|
|||
// the REACT_APP_ prefix or not
|
|||
const pinnerApiHostEnv = process.env.REACT_APP_PINNER_API_HOST || process.env.PINNER_API_HOST; |
|||
const pinnerApiPortEnv = process.env.REACT_APP_PINNER_API_PORT || process.env.PINNER_API_PORT; |
|||
|
|||
module.exports = { |
|||
pinnerApiHostEnv, |
|||
pinnerApiPortEnv, |
|||
}; |
|||
|
Loading…
Reference in new issue