Monday, September 19, 2022

Webhook for firebase

 const functions = require("firebase-functions");

const admin = require("firebase-admin");

admin.initializeApp();

exports.events = functions.https.onRequest((request, response) => {
  // response.send("Endpoint test Webhooks!");

  const collectionNamePrefix = "/_wh_";
  let eventCode = "";
  // eslint-disable-next-line prefer-const
  let sixResponse = JSON.parse(JSON.stringify(request.body));
  try {
    eventCode = sixResponse["EventCode"];
  } catch (error) {
    console.log(error);
  }

  console.log("Response Code ------ "+JSON.stringify(request.body));
  console.log("Response ------ " + sixResponse);
  console.log("event code ------ " + eventCode);

  let collectionName = "";

  switch (eventCode) {
    case "INVOICE_CREATED":
      collectionName = "invoices";
      break;
    case "MOVEIN":
      collectionName = "moveins";
      break;
    case "RECEIPT_CREATED":
      collectionName = "receipts";
      break;
    case eventCode.startsWith("USER"):
      collectionName = "users";
      break;
    case eventCode.startsWith("UNIT"):
      collectionName = "units";
      break;
    default:
      collectionName = "events";
  }

  console.log("collectionName ------ " + collectionName);
  return admin.firestore().collection(collectionNamePrefix+collectionName)
      .add({event: sixResponse})
      .then((snapshot) => {
        return response.json({received: true, ref: "from mobile app"});
        // return response.json({received: true, ref: snapshot.ref.toString()});
      })
      .catch((err) => {
        console.error(err);
        return response.status(500).end();
      });
});


To update the changes to from VS code
firebase deploy --only functions