Skip to content
This repository has been archived by the owner on Jun 11, 2024. It is now read-only.

Extract http api from modules - Closes #455 #467

Merged
merged 32 commits into from
Mar 16, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c48ce41
extract http api from modules
MaciejBaj Mar 8, 2017
2c7e979
fix typo in handshake function
MaciejBaj Mar 8, 2017
9dbfc76
fix dapps http requests types to posts
MaciejBaj Mar 8, 2017
31ee0f6
fix peer application
MaciejBaj Mar 8, 2017
8ad8c39
correct unknown route expectation
MaciejBaj Mar 8, 2017
86d6f34
add missing internal functions
MaciejBaj Mar 8, 2017
8d83cd9
use proper schema for search
MaciejBaj Mar 8, 2017
a6b58fc
invoke height and get with proper args order
MaciejBaj Mar 8, 2017
8e79fc0
dapps stop return values order changed
MaciejBaj Mar 8, 2017
3a0f7f2
correct schema for peer/blocks
MaciejBaj Mar 8, 2017
4830f7b
switch responses between uninstalling and lunched
MaciejBaj Mar 8, 2017
2af7c9b
bing req params into passed request
MaciejBaj Mar 9, 2017
aaed3e9
change travis tests order for better performance
MaciejBaj Mar 9, 2017
e1f0ef9
bind only ip, method, path to passed req
MaciejBaj Mar 9, 2017
37b4ebe
add jsdocs to created helpers
MaciejBaj Mar 9, 2017
ff99398
fix forgingStatus arguments handling
MaciejBaj Mar 9, 2017
86c4d95
unify returned err responses, simplify http transport
MaciejBaj Mar 9, 2017
8b22720
change arguments order in transactions and signatures
MaciejBaj Mar 9, 2017
b275161
fix transport function names
MaciejBaj Mar 9, 2017
904edbc
Merge branch 'development' into 455-detach-api
karmacoma Mar 10, 2017
b250d53
Normalising spacing
Mar 10, 2017
dae06ca
Fixing indent
Mar 10, 2017
c402dc6
Correcting grammar
Mar 10, 2017
adf2bde
Revising error messages
Mar 10, 2017
0d3c758
Correcting spelling
Mar 10, 2017
92acf29
Correcting spelling
Mar 10, 2017
2005137
Removing comment
Mar 10, 2017
4e5240b
Adding else branches
Mar 10, 2017
830d845
Commenting sections
Mar 10, 2017
ac1a26b
add comment regarding tests order
MaciejBaj Mar 10, 2017
e360654
remove checking of err return by sanitize
MaciejBaj Mar 10, 2017
3e2575e
correct expectiation after gramma changes
MaciejBaj Mar 10, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ env:
- HOST=http://0.0.0.0:4000
- COVERALLS_PARALLEL=true
matrix:
# longest first
- TEST=test/api/peer.transactions.stress.js TEST_TYPE='FUNC'
- TEST=test/api/peer.transactions.votes.js TEST_TYPE='FUNC'
- TEST=test/unit/logic TEST_TYPE='UNIT'
- TEST=test/api/delegates.js TEST_TYPE='FUNC'
- TEST=test/api/accounts.js TEST_TYPE='FUNC'
- TEST=test/api/blocks.js TEST_TYPE='FUNC'
Expand All @@ -49,7 +51,6 @@ env:
- TEST=test/api/transactions.js TEST_TYPE='FUNC'

- TEST=test/unit/helpers TEST_TYPE='UNIT'
- TEST=test/unit/logic TEST_TYPE='UNIT'
- TEST=test/unit/modules TEST_TYPE='UNIT'
script: 'npm run travis'
after_success:
Expand Down
38 changes: 38 additions & 0 deletions api/http/accounts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');
var schema = require('../../schema/accounts.js');

// Constructor
function AccountsHttpApi (accountsModule, app) {

var router = new Router();

router.map(accountsModule.shared, {
'post /open': 'open',
'get /getBalance': 'getBalance',
'get /getPublicKey': 'getPublickey',
'post /generatePublicKey': 'generatePublicKey',
'get /delegates': 'getDelegates',
'get /delegates/fee': 'getDelegatesFee',
'put /delegates': 'addDelegates',
'get /': 'getAccount'
});

router.map(accountsModule.internal, {
'get /count': 'count'
});

if (process.env.DEBUG && process.env.DEBUG.toUpperCase() === 'TRUE') {
router.map(accountsModule.internal, {'get /getAllAccounts': 'getAllAccounts'});
}

if (process.env.TOP && process.env.TOP.toUpperCase() === 'TRUE') {
router.get('/top', httpApi.middleware.sanitize('query', schema.top, accountsModule.internal.top));
}

httpApi.registerEndpoint('/api/accounts', app, router, accountsModule.isLoaded);
}

module.exports = AccountsHttpApi;
29 changes: 29 additions & 0 deletions api/http/blocks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function BlocksHttpApi (blocksModule, app) {

var router = new Router();

router.map(blocksModule.shared, {
'get /get': 'getBlock',
'get /': 'getBlocks',
'get /getBroadhash': 'getBroadhash',
'get /getEpoch': 'getEpoch',
'get /getHeight': 'getHeight',
'get /getNethash': 'getNethash',
'get /getFee': 'getFee',
'get /getFees': 'getFees',
'get /getMilestone': 'getMilestone',
'get /getReward': 'getReward',
'get /getSupply': 'getSupply',
'get /getStatus': 'getStatus'
});

httpApi.registerEndpoint('/api/blocks', app, router, blocksModule.isLoaded);
}

module.exports = BlocksHttpApi;
36 changes: 36 additions & 0 deletions api/http/dapps.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');
var schema = require('../../schema/dapps');

// Constructor
function DappsHttpApi (dappsModule, app) {

var router = new Router();

router.map(dappsModule.internal, {
'get /categories': 'categories',
'get /installed': 'installed',
'get /installedIds': 'installedIds',
'get /ismasterpasswordenabled': 'isMasterPaswordEnabled',
'get /installing': 'installing',
'get /uninstalling': 'getDelegatesFee',
'get /launched': 'launched',
'post /launch': 'launch',
'put /transaction': 'addTransactions',
'put /withdrawal': 'sendWithdrawal'
});

router.get('/', httpApi.middleware.sanitize('query', schema.list, dappsModule.internal.list));
router.put('/', httpApi.middleware.sanitize('body', schema.put, dappsModule.internal.put));
router.get('/get', httpApi.middleware.sanitize('query', schema.get, dappsModule.internal.get));
router.get('/search', httpApi.middleware.sanitize('query', schema.search, dappsModule.internal.search));
router.post('/install', httpApi.middleware.sanitize('body', schema.install, dappsModule.internal.install));
router.post('/uninstall', httpApi.middleware.sanitize('body', schema.uninstall, dappsModule.internal.uninstall));
router.post('/stop', httpApi.middleware.sanitize('body', schema.stop, dappsModule.internal.stop));

httpApi.registerEndpoint('/api/dapps', app, router, dappsModule.isLoaded);
}

module.exports = DappsHttpApi;
39 changes: 39 additions & 0 deletions api/http/delegates.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function DelegatesHttpApi (delegatesModule, app) {

var router = new Router();

router.map(delegatesModule.shared, {
'get /count': 'count',
'get /search': 'search',
'get /voters': 'getVoters',
'get /get': 'getDelegate',
'get /': 'getDelegates',
'get /fee': 'getFee',
'get /forging/getForgedByAccount': 'getForgedByAccount',
'put /': 'addDelegate',
'get /getNextForgers': 'getNextForgers'
});

router.map(delegatesModule.internal, {
'get /forging/enable': 'forgingEnable',
'get /forging/disable': 'forgingDisable',
'get /forging/status': 'forgingStatus'
});

if (process.env.DEBUG) {
router.map(delegatesModule.internal, {
'get /forging/disableAll': 'forgingDisableAll',
'get /forging/enableAll': 'forgingEnableAll'
});
}

httpApi.registerEndpoint('/api/delegates', app, router, delegatesModule.isLoaded);
}

module.exports = DelegatesHttpApi;
24 changes: 24 additions & 0 deletions api/http/loader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function LoaderHttpApi (loaderModule, app) {

var router = new Router();

router.map(loaderModule.shared, {
'get /status': 'status',
'get /status/sync': 'sync'
});

router.get('/status/ping', function (req, res) {
var status = loaderModule.internal.statusPing();
return res.status(status ? 200 : 503).json({success: status});
});

httpApi.registerEndpoint('/api/loader', app, router, loaderModule.isLoaded);
}

module.exports = LoaderHttpApi;
21 changes: 21 additions & 0 deletions api/http/multisignatures.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function MultisignaturesHttpApi (mutlisignaturesModule, app) {

var router = new Router();

router.map(mutlisignaturesModule.shared, {
'get /pending': 'pending',
'post /sign': 'sign',
'put /': 'addMultisignature',
'get /accounts': 'getAccounts'
});

httpApi.registerEndpoint('/api/multisignatures', app, router, mutlisignaturesModule.isLoaded);
}

module.exports = MultisignaturesHttpApi;
21 changes: 21 additions & 0 deletions api/http/peers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function PeersHttpApi (peersModule, app) {

var router = new Router();

router.map(peersModule.shared, {
'get /': 'getPeers',
'get /version': 'version',
'get /get': 'getPeer',
'get /count': 'count'
});

httpApi.registerEndpoint('/api/peers', app, router, peersModule.isLoaded);
}

module.exports = PeersHttpApi;
34 changes: 34 additions & 0 deletions api/http/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function ServerHttpApi (serverModule, app) {

var router = new Router();

router.use(function (req, res, next) {
if (serverModule.areModulesReady()) { return next(); }
res.status(500).send({success: false, error: 'Blockchain is loading'});
});

router.get('/', function (req, res) {
if (serverModule.isLoaded()) {
res.render('wallet.html', {layout: false});
} else {
res.render('loading.html');
}
});

router.use(function (req, res, next) {
if (req.url.indexOf('/api/') === -1 && req.url.indexOf('/peer/') === -1) {
return res.redirect('/');
}
next();
});

app.use('/', router);
}

module.exports = ServerHttpApi;
19 changes: 19 additions & 0 deletions api/http/signatures.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function SignaturesHttpApi (signaturesModule, app) {

var router = new Router();

router.map(signaturesModule.shared, {
'get /fee': 'getFee',
'put /': 'addSignature'
});

httpApi.registerEndpoint('/api/signatures', app, router, signaturesModule.isLoaded);
}

module.exports = SignaturesHttpApi;
27 changes: 27 additions & 0 deletions api/http/transactions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';

var Router = require('../../helpers/router');
var httpApi = require('../../helpers/httpApi');

// Constructor
function TransactionsHttpApi (transactionsModule, app) {

var router = new Router();

router.map(transactionsModule.shared, {
'get /': 'getTransactions',
'get /get': 'getTransaction',
'get /count': 'getTransactionsCount',
'get /queued/get': 'getQueuedTransaction',
'get /queued': 'getQueuedTransactions',
'get /multisignatures/get': 'getMultisignatureTransaction',
'get /multisignatures': 'getMultisignatureTransactions',
'get /unconfirmed/get': 'getUnconfirmedTransaction',
'get /unconfirmed': 'getUnconfirmedTransactions',
'put /': 'addTransactions'
});

httpApi.registerEndpoint('/api/transactions', app, router, transactionsModule.isLoaded);
}

module.exports = TransactionsHttpApi;
Loading