-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
REST API Improvements [SLT-179] #3133
Changes from all commits
5ea9ba2
e2bab25
d35d50a
b7ba450
42890d9
f0a059b
e37ee32
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -2,6 +2,7 @@ import { validationResult } from 'express-validator' | |||||||||||||||||||||||||||||||||||||
import { parseUnits } from '@ethersproject/units' | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
import { Synapse } from '../services/synapseService' | ||||||||||||||||||||||||||||||||||||||
import { tokenAddressToToken } from '../utils/tokenAddressToToken' | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
export const swapTxInfoController = async (req, res) => { | ||||||||||||||||||||||||||||||||||||||
const errors = validationResult(req) | ||||||||||||||||||||||||||||||||||||||
|
@@ -10,23 +11,23 @@ export const swapTxInfoController = async (req, res) => { | |||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
try { | ||||||||||||||||||||||||||||||||||||||
const { chain, amount } = req.query | ||||||||||||||||||||||||||||||||||||||
const fromTokenInfo = res.locals.tokenInfo.fromToken | ||||||||||||||||||||||||||||||||||||||
const toTokenInfo = res.locals.tokenInfo.toToken | ||||||||||||||||||||||||||||||||||||||
const { chain, amount, address, fromToken, toToken } = req.query | ||||||||||||||||||||||||||||||||||||||
Defi-Moses marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
Comment on lines
+14
to
+15
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing validation for 'address', 'amount', and 'chain' parameters Currently, the code validates Apply the following diff to add validation for these parameters: try {
const { chain, amount, address, fromToken, toToken } = req.query
+ if (!address || !isAddress(address)) {
+ return res.status(400).json({ error: 'Invalid address parameter' })
+ }
+
+ if (!chain || isNaN(Number(chain))) {
+ return res.status(400).json({ error: 'Invalid chain parameter' })
+ }
+
+ if (!amount || isNaN(Number(amount)) || Number(amount) <= 0) {
+ return res.status(400).json({ error: 'Invalid amount parameter' })
+ }
if (!isAddress(fromToken) || !isAddress(toToken)) {
return res.status(400).json({ error: 'Invalid token address' })
} Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||
const fromTokenInfo = tokenAddressToToken(chain.toString(), fromToken) | ||||||||||||||||||||||||||||||||||||||
Defi-Moses marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
const amountInWei = parseUnits(amount.toString(), fromTokenInfo.decimals) | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
const quote = await Synapse.swapQuote( | ||||||||||||||||||||||||||||||||||||||
Number(chain), | ||||||||||||||||||||||||||||||||||||||
fromTokenInfo.address, | ||||||||||||||||||||||||||||||||||||||
toTokenInfo.address, | ||||||||||||||||||||||||||||||||||||||
fromToken, | ||||||||||||||||||||||||||||||||||||||
toToken, | ||||||||||||||||||||||||||||||||||||||
amountInWei | ||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
const txInfo = await Synapse.swap( | ||||||||||||||||||||||||||||||||||||||
Number(chain), | ||||||||||||||||||||||||||||||||||||||
fromTokenInfo.address, | ||||||||||||||||||||||||||||||||||||||
toTokenInfo.address, | ||||||||||||||||||||||||||||||||||||||
address, | ||||||||||||||||||||||||||||||||||||||
fromToken, | ||||||||||||||||||||||||||||||||||||||
amountInWei, | ||||||||||||||||||||||||||||||||||||||
quote.query | ||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add validation for the
chain
variable.The code assumes that the
chain
variable is present in thereq.query
object and uses it directly without any validation.It's important to validate the
chain
variable to ensure it is a valid and supported chain identifier. Consider adding validation checks for thechain
variable to handle cases where an invalid or unsupported chain identifier is provided.Here's an example of how you can validate the
chain
variable: