Advertisement
NikolayBezay

Groo lead integration google cloud function.

Dec 29th, 2022
1,145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fetch = require('node-fetch');
  2.  
  3. exports.sendGrooLead = async (req, res) => {
  4.     try {
  5.         console.log('check IP start');
  6.         const response = await fetch('https://ifconfig.co/json');
  7.         const data = await response.json();
  8.         console.log('check IP response - ', data);
  9.     } catch (error) {
  10.         console.log('check IP failed');
  11.     }
  12.  
  13.     const STAGE_ENDPOINT = 'https://externalprovider-subscriptions-dot-gcommerce-cms-stage.appspot.com/user/update-subscriptions';
  14.     const LIVE_ENDPOINT = 'https://ext-subscriptions.groo.co.il/user/update-subscriptions';
  15.     let endpointToWork = '';
  16.     let requestHeaders = {'Content-Type': 'application/json'};
  17.     let { email, websiteid, phone, city, sourcePage, userIp, userAgent, firstName, lastName, gender, liveMode } = req.query;
  18.  
  19.     if (liveMode) {
  20.         endpointToWork = LIVE_ENDPOINT;
  21.         requestHeaders['Authorization'] = 'Basic Y***********dEd2M=';
  22.     } else {
  23.         endpointToWork = STAGE_ENDPOINT;
  24.     }
  25.     if (!email || !email.includes('@')) {
  26.       return res.send('email is required');
  27.     }
  28.     if (!websiteid) {
  29.       return res.send('websiteid is required');
  30.     }
  31.     if (!sourcePage) {
  32.       return res.send('sourcePage is required');
  33.     }
  34.     if (!userIp) {
  35.       return res.send('userIp is required');
  36.     }
  37.     if (!userAgent) {
  38.       return res.send('userAgent is required');
  39.     }
  40.     websiteid = parseInt(websiteid);
  41.     if (websiteid <= 0 || websiteid > 2) {
  42.       return res.send('websiteid value can be 1 or 2');
  43.     }
  44.     let leadNewsletters = [              
  45.         {
  46.             name: 'News_Travel',
  47.             subscribe: true
  48.         },
  49.         {
  50.             name: 'News_Shopping',
  51.             subscribe: true
  52.         }
  53.     ];
  54.     if (websiteid == 1 && city) {
  55.         leadNewsletters.push({name: city, subscribe: true});
  56.     }
  57.     if ((websiteid == 1 && !city) || websiteid == 2) {
  58.         leadNewsletters.push({name: 'News_TelAviv', subscribe: true});
  59.     }
  60.  
  61.     let leadData = {
  62.       data: {
  63.           email: email,
  64.           websiteId: websiteid,
  65.           newsletters: leadNewsletters,
  66.           notifications: {
  67.               alert: {
  68.                   email: true,
  69.                   sms: true
  70.               },
  71.               marketing: {
  72.                   email: true,
  73.                   sms: true
  74.               }
  75.           }
  76.       },
  77.       context: {
  78.           platform: 'Adoric',
  79.           screen: sourcePage,
  80.           ip: userIp,
  81.           userAgent: userAgent
  82.       }
  83.     };
  84.     if (phone) {
  85.         leadData.data['phone'] = phone;
  86.     }
  87.     if (gender) {
  88.         leadData.data['gender'] = gender;
  89.     }
  90.     if (lastName) {
  91.         leadData.data['lastName'] = lastName;
  92.     }
  93.     if (firstName) {
  94.         leadData.data['firstName'] = firstName;
  95.     }
  96.     try {
  97.         const response = await fetch(endpointToWork, {
  98.             method: 'POST',
  99.             body: JSON.stringify(leadData),
  100.             headers: requestHeaders,
  101.         });
  102.         const data = await response.json();
  103.         res.status(200).json(data);
  104.     } catch (error) {
  105.         res.status(500).send(error.message);
  106.     }
  107.  
  108. };
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement