auths
objectreturn
or this.key = 'value'
, pass input data to your code viaparams
, and maintain state across executions with$checkpoint.async
(event, steps, auths) => {
}
const base64 = require('base-64');
const utf8 = require('utf8');
var bytes = utf8.encode(auths.snipcart.api_key);
var api64 = base64.encode(bytes);
const validateToken = await require("@pipedreamhq/platform").axios(this, {
url: `https://app.snipcart.com/api/requestvalidation/${steps.trigger.event.headers["x-snipcart-requesttoken"]}`,
headers: {
contentType: "application/json",
authorization: "Basic " + api64
}
});
if(!validateToken){
return await $response({
status: 400,
body: {
errors: [{
"key": "bad_request",
"message": "Not from snipcart API"
}]
}
})
}
console.log(event.body.content.shippingAddressPostalCode);
this.shippingPostalCode = event.body.content.shippingAddressPostalCode;
const shipping_methods = await require("@pipedreamhq/platform").axios(this, {
url: `https://app.snipcart.com/api/shipping_methods`,
headers:{
accept: "application/json"
},
auth: {
username: `${auths.snipcart.api_key}`,
password: ``,
},
});
this.shipping_methods = shipping_methods;
for(var i = 0; i < shipping_methods.length; i++){
if(shipping_methods[i].postalCodeRegex){
var regexPostalCode = new RegExp(shipping_methods[i].postalCodeRegex, "g");
console.log("Found Regex", regexPostalCode);
if((steps.trigger.event.body.content.shippingAddressPostalCode.toString()).match(regexPostalCode) === null){
console.log("Send Error Response", shipping_methods[i].postalCodeRegex);
return await $respond({
status:200,
headers: {
contentType: "application/json",
authorization: "Basic " + api64
},
body: {
"errors": [
{
"key": "shipping-failed",
"message": "Shipping is not available on your location. Sorry..."
}
]
}
});
}
}else{
console.log("Skip", shipping_methods[i].postalCodeRegex);
continue;
}
}
$respond({
status: 200,
headers: {
contentType: "application/json"
},
body: steps.trigger.event.body.content
})
return $end("Nothing is return");