Skip to content

Commit

Permalink
fix: handle request errors (#89)
Browse files Browse the repository at this point in the history
  • Loading branch information
faustbrian committed Aug 26, 2020
1 parent 1df3c38 commit ae035f3
Showing 1 changed file with 50 additions and 24 deletions.
74 changes: 50 additions & 24 deletions packages/server/src/server/handlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,71 @@ import { TransactionStatus } from "./enums";
import { getBaseTransactionId, verifySignatures } from "./utils";

export const getTransactions = (request, h) => {
if (request.query.publicKey) {
const storeTransactions = memory.getTransactionsByPublicKey(request.query.publicKey);
try {
if (request.query.publicKey) {
const storeTransactions = memory.getTransactionsByPublicKey(request.query.publicKey);

if (request.query.state === TransactionStatus.Pending) {
return storeTransactions.filter(t => t.data.signatures.length < t.multisigAsset.min);
} else if (request.query.state === TransactionStatus.Ready) {
return storeTransactions.filter(t => t.data.signatures.length >= t.multisigAsset.min);
if (request.query.state === TransactionStatus.Pending) {
return storeTransactions.filter((t) => t.data.signatures.length < t.multisigAsset.min);
}

if (request.query.state === TransactionStatus.Ready) {
return storeTransactions.filter((t) => t.data.signatures.length >= t.multisigAsset.min);
}

return storeTransactions;
}
return storeTransactions;
}

return memory.getAllTransactions(); // keep or throw error ? (why would we need to get all tx ?)
return memory.getAllTransactions(); // keep or throw error ? (why would we need to get all tx ?)
} catch (error) {
return Boom.badImplementation(error.message);
}
};

export const getTransaction = (request, h) => {
return memory.getTransactionById(request.params.id);
try {
const transaction = memory.getTransactionById(request.params.id);

if (transaction === undefined) {
return Boom.notFound(`Failed to find transaction [${request.params.id}]`);
}

return transaction;
} catch (error) {
return Boom.badImplementation(error.message);
}
};

export const postTransaction = (request, h) => {
const transaction: IStoreTransaction = request.payload;
try {
const transaction: IStoreTransaction = request.payload;

if (transaction.data.signatures && transaction.data.signatures.length) {
if (!verifySignatures(transaction.data, transaction.multisigAsset)) {
return Boom.badData("Transaction signatures are not valid");
if (transaction.data.signatures && transaction.data.signatures.length) {
if (!verifySignatures(transaction.data, transaction.multisigAsset)) {
return Boom.badData("Transaction signatures are not valid");
}
}
}

const baseTransactionId = getBaseTransactionId(transaction.data);
const storeTransaction = memory.getTransactionById(baseTransactionId);
if (storeTransaction) {
memory.updateTransaction(transaction.data);
const baseTransactionId = getBaseTransactionId(transaction.data);
const storeTransaction = memory.getTransactionById(baseTransactionId);
if (storeTransaction) {
memory.updateTransaction(transaction.data);

return { id: baseTransactionId };
}
return { id: baseTransactionId };
}

return { id: memory.saveTransaction(transaction) };
return { id: memory.saveTransaction(transaction) };
} catch (error) {
return Boom.badImplementation(error.message);
}
};

export const deleteTransactions = (request, h) => {
memory.deleteAllTransactions();
return true;
try {
memory.deleteAllTransactions();

return h.response().code(204);
} catch (error) {
return Boom.badImplementation(error.message);
}
};

0 comments on commit ae035f3

Please sign in to comment.