Skip to content

Commit c6430de

Browse files
committed
Refactoring
1 parent 97d925d commit c6430de

File tree

3 files changed

+66
-65
lines changed

3 files changed

+66
-65
lines changed

groups/newDelegate.js

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,20 @@ module.exports = (nodeManager) => {
1717
* @param {number} maxRetries How much times to retry request
1818
* @returns {Promise} Request results
1919
*/
20-
return (passPhrase, username, maxRetries = DEFAULT_NEW_DELEGATE_RETRIES, retryNo = 0) => {
20+
return async (passPhrase, username, maxRetries = DEFAULT_NEW_DELEGATE_RETRIES, retryNo = 0) => {
2121

2222
let transaction;
2323

2424
try {
25-
if (!validator.validatePassPhrase(passPhrase))
26-
return validator.badParameter('passPhrase')
25+
if (!validator.validatePassPhrase(passPhrase)) {
26+
return validator.badParameter('passPhrase');
27+
}
2728

2829
const keyPair = keys.createKeypairFromPassPhrase(passPhrase);
2930

30-
if (!validator.validateDelegateName(username))
31-
return validator.badParameter('username')
31+
if (!validator.validateDelegateName(username)) {
32+
return validator.badParameter('username');
33+
}
3234

3335
const type = constants.transactionTypes.DELEGATE;
3436

@@ -41,28 +43,30 @@ module.exports = (nodeManager) => {
4143
transaction = transactionFormer.createTransaction(type, data);
4244

4345
} catch (e) {
46+
return validator.badParameter('#exception_catched#', e);
47+
}
4448

45-
return validator.badParameter('#exception_catched#', e)
49+
const url = nodeManager.node() + '/api/delegates';
4650

47-
}
51+
try {
52+
const response = await axios.post(url, transaction);
53+
54+
return validator.formatRequestResults(response, true);
55+
} catch (error) {
56+
const logMessage = `[ADAMANT js-api] New delegate request: Request to ${url} failed with ${error.response ? error.response.status : undefined} status code, ${error.toString()}${error.response && error.response.data ? '. Message: ' + error.response.data.toString().trim() : ''}. Try ${retryNo+1} of ${maxRetries+1}.`;
4857

49-
let url = nodeManager.node() + '/api/delegates';
50-
return axios.post(url, transaction)
51-
.then(function (response) {
52-
return validator.formatRequestResults(response, true)
53-
})
54-
.catch(function (error) {
55-
let logMessage = `[ADAMANT js-api] New delegate request: Request to ${url} failed with ${error.response ? error.response.status : undefined} status code, ${error.toString()}${error.response && error.response.data ? '. Message: ' + error.response.data.toString().trim() : ''}. Try ${retryNo+1} of ${maxRetries+1}.`;
56-
if (retryNo < maxRetries) {
57-
logger.log(`${logMessage} Retrying…`);
58-
return nodeManager.changeNodes()
59-
.then(function () {
60-
return module.exports(nodeManager)(passPhrase, addressOrPublicKey, amount, isAmountInADM, maxRetries, ++retryNo)
61-
})
62-
}
63-
logger.warn(`${logMessage} No more attempts, returning error.`);
64-
return validator.formatRequestResults(error, false)
65-
})
58+
if (retryNo < maxRetries) {
59+
logger.log(`${logMessage} Retrying…`);
6660

61+
return nodeManager.changeNodes()
62+
.then(() => (
63+
module.exports(nodeManager)(passPhrase, addressOrPublicKey, amount, isAmountInADM, maxRetries, ++retryNo)
64+
));
65+
}
66+
67+
logger.warn(`${logMessage} No more attempts, returning error.`);
68+
69+
return validator.formatRequestResults(error, false);
70+
}
6771
}
6872
};

groups/voteForDelegate.js

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,23 @@ module.exports = (nodeManager) => {
2525
let transaction;
2626

2727
try {
28-
if (!validator.validatePassPhrase(passPhrase))
28+
if (!validator.validatePassPhrase(passPhrase)) {
2929
return validator.badParameter('passPhrase');
30+
}
3031

3132
const keyPair = keys.createKeypairFromPassPhrase(passPhrase);
3233

3334
const uniqueVotes = [];
3435

35-
for (let i = votes.length - 1; i >= 0; i--) {
36-
const vote = votes[i];
36+
votes.forEach((vote, i) => {
3737
const voteName = vote.slice(1);
3838
const voteDirection = vote.charAt(0);
3939

4040
const cachedPublicKey = publicKeysCache[voteName];
4141

4242
if (cachedPublicKey) {
4343
votes[i] = `${voteDirection}${cachedPublicKey}`;
44+
4445
continue;
4546
}
4647

@@ -49,34 +50,38 @@ module.exports = (nodeManager) => {
4950

5051
if (res.success) {
5152
const publicKey = res.data.account.publicKey;
53+
5254
votes[i] = `${voteDirection}${publicKey}`;
5355
publicKeysCache[voteName] = publicKey;
5456
} else {
5557
logger.warn(`[ADAMANT js-api] Failed to get public key for ${vote}. ${res.errorMessage}.`);
56-
return validator.badParameter('votes')
58+
59+
return validator.badParameter('votes');
5760
}
5861
} else if (validator.validateAdmVoteForDelegateName(vote)) {
5962
const res = await get(nodeManager)('/delegates/get', { username: voteName });
6063

6164
if (res.success) {
6265
const publicKey = res.data.delegate.publicKey;
66+
6367
votes[i] = `${voteDirection}${publicKey}`;
6468
publicKeysCache[voteName] = publicKey;
6569
} else {
6670
logger.warn(`[ADAMANT js-api] Failed to get public key for ${vote}. ${res.errorMessage}.`);
67-
return validator.badParameter('votes')
71+
72+
return validator.badParameter('votes');
6873
}
6974
} else if (!validator.validateAdmVoteForPublicKey(vote)) {
70-
return validator.badParameter('votes')
75+
return validator.badParameter('votes');
7176
}
7277

7378
// Exclude duplicates
74-
const foundCopy = uniqueVotes.findIndex((v) => v.slice(1) === votes[i].slice(1));
79+
const foundCopy = uniqueVotes.find((v) => v.slice(1) === votes[i].slice(1));
7580

76-
if (foundCopy === -1) {
81+
if (!foundCopy) {
7782
uniqueVotes.push(votes[i]);
7883
}
79-
}
84+
});
8085

8186
const type = constants.transactionTypes.VOTE;
8287

@@ -87,30 +92,31 @@ module.exports = (nodeManager) => {
8792
};
8893

8994
transaction = transactionFormer.createTransaction(type, data);
95+
} catch (error) {
96+
return validator.badParameter('#exception_catched#', error)
97+
}
9098

91-
} catch (e) {
99+
const url = nodeManager.node() + '/api/accounts/delegates';
92100

93-
return validator.badParameter('#exception_catched#', e)
101+
try {
102+
const response = await axios.post(url, transaction);
94103

95-
}
104+
return validator.formatRequestResults(response, true);
105+
} catch(error) {
106+
const logMessage = `[ADAMANT js-api] Vote for delegate request: Request to ${url} failed with ${error.response ? error.response.status : undefined} status code, ${error.toString()}${error.response && error.response.data ? '. Message: ' + error.response.data.toString().trim() : ''}. Try ${retryNo+1} of ${maxRetries+1}.`;
96107

97-
let url = nodeManager.node() + '/api/accounts/delegates';
98-
return axios.post(url, transaction)
99-
.then(function (response) {
100-
return validator.formatRequestResults(response, true)
101-
})
102-
.catch(function (error) {
103-
let logMessage = `[ADAMANT js-api] Vote for delegate request: Request to ${url} failed with ${error.response ? error.response.status : undefined} status code, ${error.toString()}${error.response && error.response.data ? '. Message: ' + error.response.data.toString().trim() : ''}. Try ${retryNo+1} of ${maxRetries+1}.`;
104-
if (retryNo < maxRetries) {
105-
logger.log(`${logMessage} Retrying…`);
106-
return nodeManager.changeNodes()
107-
.then(function () {
108-
return module.exports(nodeManager)(passPhrase, addressOrPublicKey, amount, isAmountInADM, maxRetries, ++retryNo)
109-
})
110-
}
111-
logger.warn(`${logMessage} No more attempts, returning error.`);
112-
return validator.formatRequestResults(error, false)
113-
})
108+
if (retryNo < maxRetries) {
109+
logger.log(`${logMessage} Retrying…`);
114110

111+
return nodeManager.changeNodes()
112+
.then(() => (
113+
module.exports(nodeManager)(passPhrase, addressOrPublicKey, amount, isAmountInADM, maxRetries, ++retryNo)
114+
));
115+
}
116+
117+
logger.warn(`${logMessage} No more attempts, returning error.`);
118+
119+
return validator.formatRequestResults(error, false);
120+
}
115121
}
116122
};

helpers/validator.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,15 @@ module.exports = {
5353
},
5454

5555
validateAdmVoteForPublicKey(publicKey) {
56-
if (!publicKey || typeof(publicKey) !== 'string' || !constants.RE_ADM_VOTE_FOR_PUBLIC_KEY.test(publicKey))
57-
return false
58-
else
59-
return true
56+
return (publicKey && typeof(publicKey) === 'string' && constants.RE_ADM_VOTE_FOR_PUBLIC_KEY.test(publicKey));
6057
},
6158

6259
validateAdmVoteForAddress(address) {
63-
if (!address || typeof(address) !== 'string' || !constants.RE_ADM_VOTE_FOR_ADDRESS.test(address))
64-
return false
65-
else
66-
return true
60+
return (address && typeof(address) === 'string' && constants.RE_ADM_VOTE_FOR_ADDRESS.test(address));
6761
},
6862

6963
validateAdmVoteForDelegateName(delegateName) {
70-
if (!delegateName || typeof(delegateName) !== 'string' || !constants.RE_ADM_VOTE_FOR_DELEGATE_NAME.test(delegateName))
71-
return false
72-
else
73-
return true
64+
return (delegateName && typeof(delegateName) === 'string' && constants.RE_ADM_VOTE_FOR_DELEGATE_NAME.test(delegateName));
7465
},
7566

7667
validateIntegerAmount(amount) {

0 commit comments

Comments
 (0)