Skip to content

Instantly share code, notes, and snippets.

@RealDyllon
Created April 24, 2020 03:58
Show Gist options
  • Save RealDyllon/0240ba0d1ba0fbebf23efe61746623ad to your computer and use it in GitHub Desktop.
Save RealDyllon/0240ba0d1ba0fbebf23efe61746623ad to your computer and use it in GitHub Desktop.
const https = require('https');
const querystring = require('querystring');
exports.handler = async(event) => {
let dataString = '';
const httpOrigin = event.headers.origin
const allowedOrigins = [
"https://supermarkets.dyllon.dev"
]
const isAllowed = allowedOrigins.indexOf(httpOrigin) > -1
// grab our params from the lambda proxy integration
const reqParamsData = {
code: (event &&
event.queryStringParameters) ?
event.queryStringParameters.postcode : "000000",
pinStatus: 1
}
// console.log("postcode", reqParamsData.code)
const reqParams = querystring.stringify(reqParamsData);
// const reqParams = JSON.stringify(reqParamsData);
// https://www.allforyou.sg/Common/pinCodeSearch
const reqOptions = {
method: 'POST',
hostname: 'www.allforyou.sg',
path: '/Common/pinCodeSearch',
headers: {
"Host": "allforyou.sg",
"User-Agent": "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US);",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest",
"Content-Length": reqParams.length,
"Origin": "https://allforyou.sg",
"Connection": "keep-alive",
"Referer": "https://allforyou.sg/",
}
}
const response = await new Promise((resolve, reject) => {
// define the https request
const req = https.request(reqOptions, res => {
//append to data string in real time
res.on('data', chunk => {
// console.log("chunk", chunk)
dataString += chunk;
});
//when we've got all the data:
res.on('end', () => {
console.log("dataString", (dataString))
let dataObj = JSON.parse(dataString)
let outputString = JSON.stringify({ ...dataObj,
apiParamsEcho: {
postcode: reqParamsData.code === "000000" ?
"missing!!!" : reqParamsData.code
}
})
resolve({
statusCode: 200,
headers: {
"Access-Control-Allow-Origin":
isAllowed ?
httpOrigin : "https://supermarkets.dyllon.dev",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
},
body: outputString
});
});
})
// abort in case of error
req.on('error', (e) => {
reject({
statusCode: 500,
headers: {
"Access-Control-Allow-Origin": isAllowed ?
httpOrigin : "https://supermarkets.dyllon.dev",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
},
body: 'Something went wrong!'
});
});
req.write(reqParams)
req.end()
});
return response;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment