diff --git a/CHANGELOG.md b/CHANGELOG.md index b08df54d..cadb196d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +### 5.17.0 / TBD +* Add support for detect provider endpoint + ### 5.17.0 / 2022-04-04 * Add support for verifying webhook signatures * Add `event.updated_at` diff --git a/lib/nylas/api.rb b/lib/nylas/api.rb index f8c2b09d..4d91f544 100644 --- a/lib/nylas/api.rb +++ b/lib/nylas/api.rb @@ -200,6 +200,24 @@ def ip_addresses client.as(client.app_secret).get(path: path, auth_method: HttpClient::AuthMethod::BASIC) end + # Returns list of IP addresses + # @param email_address [String] The email address to detect the provider for + # @return [Hash] The provider information + # hash has keys of :updated_at (unix timestamp) and :ip_addresses (array of strings) + def detect_provider(email_address) + payload = { + "client_id" => app_id, + "client_secret" => client.app_secret, + "email_address" => email_address + } + + client.as(client.app_secret).execute( + method: :post, + path: "/connect/detect-provider", + payload: JSON.dump(payload) + ) + end + # @param message [Hash, String, #send!] # @return [Message] The resulting message def send!(message) diff --git a/spec/nylas/api_spec.rb b/spec/nylas/api_spec.rb index ee96885f..73b6b9c4 100644 --- a/spec/nylas/api_spec.rb +++ b/spec/nylas/api_spec.rb @@ -5,6 +5,39 @@ # This spec is the only one that should have any webmock stuff going on, everything else should use the # FakeAPI to see what requests were made and what they included. describe Nylas::API do + describe "#detect_provider" do + # tests the detect_providr method + it "returns the provider" do + url = "https://api.nylas.com/connect/detect-provider" + client = Nylas::HttpClient.new(app_id: "not-real", app_secret: "also-not-real") + data = { + "client_id" => "not-real", + "client_secret" => "also-not-real", + "email_address" => "test@gmail.com" + } + response = { + auth_name: "gmail", + detected: true, + email_address: "test@gmail.com", + is_imap: false, + provider_name: "gmail" + } + + stub_request(:post, url) + .to_return( + status: 200, + body: response.to_json, + headers: { "content-type" => "application/json" } + ) + api = described_class.new(client: client) + res = api.detect_provider("test@gmail.com") + + expect(res).to eq(response) + expect(WebMock).to have_requested(:post, url) + .with(body: data) + end + end + describe "#exchange_code_for_token" do it "retrieves oauth token with code" do client = Nylas::HttpClient.new(app_id: "fake-app", app_secret: "fake-secret")