1
0
mirror of https://github.com/oceanprotocol/webtasks synced 2024-06-28 00:37:43 +02:00
webtasks/webtask-zoho.js

69 lines
2.0 KiB
JavaScript
Raw Normal View History

2018-06-21 08:29:35 +02:00
const express = require('express')
const Webtask = require('webtask-tools')
const cors = require('cors')
const bodyParser = require('body-parser')
const request = require('request')
2018-06-21 08:29:35 +02:00
const server = express()
server.listen(4430)
server.use(bodyParser.json())
2018-06-21 15:28:57 +02:00
2018-06-22 13:05:58 +02:00
//
// Allow requests from these domains only
//
const corsOptions = {
origin: ['https://oceanprotocol.com', /\.oceanprotocol\.com$/],
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}
server.use(cors(corsOptions))
2018-06-21 17:54:41 +02:00
//
2018-06-21 18:09:22 +02:00
// Zoho APIs
2018-06-21 17:54:41 +02:00
//
const apiUrlZohoCampaigns = 'https://campaigns.zoho.com/api/'
const apiUrlZohoCRM = 'https://www.zohoapis.com/crm/v2/'
2018-06-21 15:28:57 +02:00
2018-06-21 18:09:22 +02:00
const sendRequest = (options, res) => {
request(options, (error, response, body) => {
if (error) res.send(error)
2018-06-22 13:05:58 +02:00
// just pass through whatever we get from the APIs
// as the response
2018-06-21 18:09:22 +02:00
res.send(body)
})
}
//
// Subscribe to newsletter via Zoho Campaigns API
// https://www.zoho.com/campaigns/newhelp/api/contact-subscribe.html
//
server.get('/newsletter/:data', (req, res) => {
2018-06-21 15:28:57 +02:00
const { ZOHO_CAMPAIGNS_TOKEN, ZOHO_CAMPAIGNS_LIST_KEY } = req.webtaskContext.secrets
const { data } = req.params
const options = {
2018-06-21 18:42:52 +02:00
url: `${apiUrlZohoCampaigns}json/listsubscribe?authtoken=${ZOHO_CAMPAIGNS_TOKEN}&scope=CampaignsAPI&resfmt=JSON&listkey=${ZOHO_CAMPAIGNS_LIST_KEY}&contactinfo=${decodeURIComponent(data)}` // eslint-disable-line max-len
}
2018-06-21 18:09:22 +02:00
sendRequest(options, res)
})
2018-06-21 17:54:41 +02:00
//
// Create a new lead via Zoho CRM API
// https://www.zoho.com/crm/help/api/v2/#create-specify-records
//
server.get('/crm/:data', (req, res) => {
const { ZOHO_CRM_TOKEN } = req.webtaskContext.secrets
2018-06-21 17:54:41 +02:00
const { data } = req.params
2018-06-21 17:54:41 +02:00
const options = {
2018-06-25 16:45:26 +02:00
url: `${apiUrlZohoCRM}Leads`,
2018-06-21 17:54:41 +02:00
headers: { 'Authorization': `Zoho-oauthtoken ${ZOHO_CRM_TOKEN}` },
method: 'POST',
formData: data
}
2018-06-21 18:09:22 +02:00
sendRequest(options, res)
2018-06-21 17:54:41 +02:00
})
2018-06-21 08:29:35 +02:00
module.exports = Webtask.fromExpress(server)