mirror of https://gitlab.com/ecentrics/concordia
Browse Source
refactor: add contracts provider integration to pinner See merge request ecentrics/concordia!14develop
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 { |
const { |
||||
pinner: { |
pinner: { |
||||
|
host: PINNER_API_HOST_DEFAULT, |
||||
port: PINNER_API_PORT_DEFAULT, |
port: PINNER_API_PORT_DEFAULT, |
||||
}, |
}, |
||||
} = require('../../constants/configuration/defaults'); |
} = 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; |
const pinnerApiPort = pinnerApiPortEnv || PINNER_API_PORT_DEFAULT; |
||||
|
|
||||
module.exports = { |
module.exports = { |
||||
|
pinnerApiHost, |
||||
pinnerApiPort, |
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
|
// 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
|
// 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; |
const pinnerApiPortEnv = process.env.REACT_APP_PINNER_API_PORT || process.env.PINNER_API_PORT; |
||||
|
|
||||
module.exports = { |
module.exports = { |
||||
|
pinnerApiHostEnv, |
||||
pinnerApiPortEnv, |
pinnerApiPortEnv, |
||||
}; |
}; |
||||
|
Loading…
Reference in new issue