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

Commit

Permalink
Removes parseTransaction and API routing
Browse files Browse the repository at this point in the history
  • Loading branch information
Tobias Schwarz committed Aug 9, 2017
1 parent 2e25ae5 commit 3eff7a3
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 624 deletions.
13 changes: 5 additions & 8 deletions src/api/liskApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,11 +160,8 @@ LiskAPI.prototype.setSSL = function setSSL(ssl) {
}
};

function parseResponse(requestType, options, requestSuccess) {
const parser = parseOfflineRequest(requestType, options);
return parser.requestMethod === 'GET'
? requestSuccess.body
: parser.transactionOutputAfter(requestSuccess.body);
function parseResponse(requestSuccess) {
return requestSuccess.body;
}

function handleTimestampIsInFutureFailures(requestType, options, result) {
Expand Down Expand Up @@ -210,8 +207,8 @@ function optionallyCallCallback(callback, result) {
/**
* @method sendRequest
* @param requestType
* @param options
* @param callback
* @param optionsOrCallback
* @param callbackIfOptions
*
* @return APIanswer Object
*/
Expand All @@ -223,7 +220,7 @@ LiskAPI.prototype.sendRequest = function sendRequest(
const options = typeof optionsOrCallback !== 'function' && typeof optionsOrCallback !== 'undefined' ? privateApi.checkOptions.call(this, optionsOrCallback) : {};

return privateApi.sendRequestPromise.call(this, requestType, options)
.then(parseResponse.bind(this, requestType, options))
.then(parseResponse.bind(this))
.then(handleTimestampIsInFutureFailures.bind(this, requestType, options))
.catch(handleSendRequestFailures.bind(this, requestType, options))
.then(optionallyCallCallback.bind(this, callback));
Expand Down
267 changes: 0 additions & 267 deletions src/api/parseTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,6 @@
* Removal or modification of this copyright notice is prohibited.
*
*/
import cryptoModule from '../transactions/crypto';
import dapp from '../transactions/dapp';
import multisignature from '../transactions/multisignature';
import signatureModule from '../transactions/signature';
import delegate from '../transactions/delegate';
import transactionModule from '../transactions/transaction';
import transfer from '../transactions/transfer';
import vote from '../transactions/vote';

const LiskJS = {
crypto: cryptoModule,
dapp,
multisignature,
signature: signatureModule,
delegate,
transaction: transactionModule,
transfer,
vote,
};

/**
* ParseOfflineRequest module provides automatic routing of new transaction requests which can be
Expand Down Expand Up @@ -110,252 +91,4 @@ ParseOfflineRequest.prototype.httpGETPUTorPOST = function httpGETPUTorPOST(provi
return requestMethod;
};

/**
* @method checkOfflineRequestBefore
*
* @return {object}
*/

ParseOfflineRequest.prototype.checkOfflineRequestBefore = function checkOfflineRequestBefore() {
const accountKeys = this.options.secret
? LiskJS.crypto.getKeys(this.options.secret)
: {};
const accountAddress = accountKeys.publicKey
? LiskJS.crypto.getAddress(accountKeys.publicKey)
: '';

const OfflineRequestThis = this;
const requestIdentification = {
'accounts/open': function getAccountsOpen() {
return {
requestMethod: 'GET',
requestUrl: `accounts?address=${accountAddress}`,
};
},
'accounts/generatePublicKey': function getAccountsGeneratePublicKey() {
return {
requestMethod: 'GET',
requestUrl: `accounts?address=${accountAddress}`,
};
},
'delegates/forging/enable': 'POST',
'delegates/forging/disable': 'POST',
'dapps/install': 'POST',
'dapps/uninstall': 'POST',
'dapps/launch': 'POST',
'dapps/stop': 'POST',
'multisignatures/sign': function postMultisignaturesSign() {
const signature = LiskJS.multisignature.signTransaction(
OfflineRequestThis.options.transaction,
OfflineRequestThis.options.secret,
);

return {
requestMethod: 'POST',
requestUrl: 'signatures',
params: { signature },
};
},
'accounts/delegates': function postAccountsDelegates() {
const transaction = LiskJS.vote.createVote(
OfflineRequestThis.options.secret,
OfflineRequestThis.options.delegates,
OfflineRequestThis.options.secondSecret,
OfflineRequestThis.options.timeOffset,
);

return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
transactions() {
const transaction = LiskJS.transaction.createTransaction(
OfflineRequestThis.options.recipientId,
OfflineRequestThis.options.amount,
OfflineRequestThis.options.secret,
OfflineRequestThis.options.secondSecret,
OfflineRequestThis.options.timeOffset,
);

return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
signatures() {
const transaction = LiskJS.signature.createSignature(
OfflineRequestThis.options.secret,
OfflineRequestThis.options.secondSecret,
OfflineRequestThis.options.timeOffset,
);

return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
delegates() {
const transaction = LiskJS.delegate.createDelegate(
OfflineRequestThis.options.secret,
OfflineRequestThis.options.username,
OfflineRequestThis.options.secondSecret,
OfflineRequestThis.options.timeOffset,
);
return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
dapps() {
const DappOptions = {
category: OfflineRequestThis.options.category,
name: OfflineRequestThis.options.name,
description: OfflineRequestThis.options.description,
tags: OfflineRequestThis.options.tags,
type: OfflineRequestThis.options.type,
link: OfflineRequestThis.options.link,
icon: OfflineRequestThis.options.icon,
secret: OfflineRequestThis.options.secret,
secondSecret: OfflineRequestThis.options.secondSecret,
};

const transaction = LiskJS.dapp.createDapp(DappOptions);

return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
multisignatures() {
const transaction = LiskJS.multisignature.createMultisignature(
OfflineRequestThis.options.secret,
OfflineRequestThis.options.secondSecret,
OfflineRequestThis.options.keysgroup,
OfflineRequestThis.options.lifetime,
OfflineRequestThis.options.min,
OfflineRequestThis.options.timeOffset,
);

return {
requestMethod: 'POST',
requestUrl: 'transactions',
params: { transaction },
};
},
};

return requestIdentification[this.requestType]();
};

/**
* @method transactionOutputAfter
* @param requestAnswer
*
* @return {object}
*/

ParseOfflineRequest.prototype.transactionOutputAfter = function transactionOutputAfter(
requestAnswer,
) {
const accountKeys = LiskJS.crypto.getKeys(this.options.secret);
const accountAddress = LiskJS.crypto.getAddress(accountKeys.publicKey);

let transformAnswer;
const requestIdentification = {
'accounts/open': function transformAccountsOpen() {
if (requestAnswer.error === 'Account not found') {
transformAnswer = {
success: 'true',
account: {
address: accountAddress,
unconfirmedBalance: '0',
balance: '0',
publicKey: accountKeys.publicKey,
unconfirmedSignature: '0',
secondSignature: '0',
secondPublicKey: null,
multisignatures: null,
u_multisignatures: null, // eslint-disable-line camelcase
},
};
} else {
transformAnswer = requestAnswer;
}

return transformAnswer;
},
'accounts/generatePublicKey': function transformAccountsGeneratePublicKey() {
return {
success: 'true',
publicKey: accountKeys.publicKey,
};
},
'delegates/forging/enable': function transformDelegatesForgingEnable() {
return {
success: 'false',
error: 'Forging not available via offlineRequest',
};
},
'delegates/forging/disable': function transformDelegatesForgingDisable() {
return {
success: 'false',
error: 'Forging not available via offlineRequest',
};
},
'dapps/install': function transformDappsInstall() {
return {
success: 'false',
error: 'Install dapp not available via offlineRequest',
};
},
'dapps/uninstall': function transformDappsUninstall() {
return {
success: 'false',
error: 'Uninstall dapp not available via offlineRequest',
};
},
'dapps/launch': function transformDappsLaunch() {
return {
success: 'false',
error: 'Launch dapp not available via offlineRequest',
};
},
'dapps/stop': function transformDappsStop() {
return {
success: 'false',
error: 'Stop dapp not available via offlineRequest',
};
},
'multisignatures/sign': function transformMultisignaturesSign() {
return requestAnswer;
},
'accounts/delegates': function transformAccountsDelegates() {
return requestAnswer;
},
transactions() {
return requestAnswer;
},
signatures() {
return requestAnswer;
},
delegates() {
return requestAnswer;
},
dapps() {
return requestAnswer;
},
multisignatures() {
return requestAnswer;
},
};

return requestIdentification[this.requestType]();
};

module.exports = ParseOfflineRequest;
14 changes: 5 additions & 9 deletions src/api/privateApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,20 +213,16 @@ function transformGETRequest(baseRequestObject, requestType, options) {
}

function transformPUTOrPOSTRequest(baseRequestObject, requestType, options) {
const transformRequest = this
.parseOfflineRequests(requestType, options)
.checkOfflineRequestBefore();

return (transformRequest.requestUrl === 'transactions' || transformRequest.requestUrl === 'signatures')
return (requestType === 'transactions' || requestType === 'signatures')
? Object.assign({}, {
requestUrl: `${getFullUrl.call(this)}/peer/${transformRequest.requestUrl}`,
requestUrl: `${getFullUrl.call(this)}/peer/${requestType}`,
nethash: this.nethash,
requestMethod: 'POST',
requestParams: transformRequest.params,
requestParams: options,
})
: Object.assign({}, baseRequestObject, {
requestUrl: `${getFullUrl.call(this)}/api/${transformRequest.requestUrl}`,
requestMethod: transformRequest.requestMethod,
requestUrl: `${getFullUrl.call(this)}/api/${requestType}`,
requestMethod: 'GET',
requestParams: options,
});
}
Expand Down

0 comments on commit 3eff7a3

Please sign in to comment.