nylas / nylas-nodejs

A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.
MIT License
169 stars 118 forks source link

Local webhook testing support #422

Closed mrashed-dev closed 1 year ago

mrashed-dev commented 1 year ago

Description

This PR enables support for local webhook development. When implementing this feature in your app, the SDK will create a tunnel connection to a websocket server and registers it as a webhook callback to your Nylas account.

Usage

During the setup process you can pass in methods to override the websocket client's callback methods. The most important method is the onMessage method which returns a parsed delta event from the webhook server.

const Nylas = require('nylas');
const { openWebhookTunnel } = require('nylas/lib/services/tunnel');

// Initialize an instance of the Nylas SDK using the client credentials
Nylas.config({
  clientId: "CLIENT_ID",
  clientSecret: "CLIENT_SECRET",
});

// Define the callback for the onMessage event
const onMessageListener = (delta) => {
    if(delta.type === WebhookTriggers.MessageUpdated) {
      console.log("Got message from webhook. Data: " + delta.objectData);
   }
}

// Pass your config in to create, register, and open the webhook tunnel for testing
openWebhookTunnel({
    onMessage: onMessageListener,
    triggers: [WebhookTriggers.MessageUpdated]
}).then(r => console.log("Webhook connected and active. " + r))

License

I confirm that this contribution is made under the terms of the MIT license and that I have the authority necessary to make this contribution on behalf of its copyright owner.

codecov[bot] commented 1 year ago

Codecov Report

Merging #422 (13606f0) into main (4c90c84) will increase coverage by 0.02%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #422      +/-   ##
==========================================
+ Coverage   91.63%   91.66%   +0.02%     
==========================================
  Files          62       62              
  Lines        2606     2614       +8     
  Branches      474      475       +1     
==========================================
+ Hits         2388     2396       +8     
  Misses        217      217              
  Partials        1        1              
Impacted Files Coverage Δ
src/config.ts 100.00% <100.00%> (ø)
src/models/webhook.ts 100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.