nylas / nylas-ruby

Ruby bindings for the Nylas Platform APIs
https://nylas.com/docs
MIT License
101 stars 130 forks source link

Local webhook testing support #399

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 on_message method which returns a parsed delta event from the webhook server.

nylas = Nylas::API.new(
    app_id: CLIENT_ID,
    app_secret: CLIENT_SECRET
)

# Define the callback for the on_message event
def on_message(delta)
  if delta.type == Nylas::WebhookTrigger::MESSAGE_UPDATED
    p [:delta, delta]
  end
end

# Config that sets the region, triggers, and callbacks
config = {
  "region": "us",
  "triggers": [WebhookTrigger::MESSAGE_UPDATED],
  "on_message": method(:on_message)
}

# Create, register, and open the webhook tunnel for testing
Nylas::Tunnel::open_webhook_tunnel(nylas, config)

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 #399 (f970ce4) into main (b3b7a04) will increase coverage by 0.09%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #399      +/-   ##
==========================================
+ Coverage   97.73%   97.83%   +0.09%     
==========================================
  Files         126      128       +2     
  Lines        4555     4712     +157     
==========================================
+ Hits         4452     4610     +158     
+ Misses        103      102       -1     
Impacted Files Coverage Δ
lib/nylas.rb 100.00% <100.00%> (ø)
lib/nylas/services/tunnel.rb 100.00% <100.00%> (ø)
spec/nylas/tunnel_spec.rb 100.00% <100.00%> (ø)
lib/nylas/collection.rb 86.58% <0.00%> (+1.21%) :arrow_up:

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