diff --git a/README.md b/README.md index 549cdaf..b4a0f0c 100644 --- a/README.md +++ b/README.md @@ -893,8 +893,25 @@ simple_spark.recipient_lists.delete(your_list_id) see SparkPost API Documentation + +### Recipient Validation + +#### Validate + +Validates a single recipient by email address. + +```ruby +simple_spark.recipient_validation.validate('rcpt1@example.com') +``` + +see SparkPost API Documentation + ## Changelog +### 1.0.13 + +- Add Recipient Validation Endpoint + ### 1.0.12 Fix param name on suppression list https://github.com/leadmachineapp/simple_spark/pull/27 ### 1.0.10 / 1.0.11 Minor documentation updates diff --git a/lib/simple_spark.rb b/lib/simple_spark.rb index 01292bc..3c2090f 100644 --- a/lib/simple_spark.rb +++ b/lib/simple_spark.rb @@ -11,6 +11,7 @@ require 'simple_spark/endpoints/events' require 'simple_spark/endpoints/webhooks' require 'simple_spark/endpoints/recipient_lists' +require 'simple_spark/endpoints/recipient_validation' require 'simple_spark/endpoints/relay_webhooks' require 'simple_spark/endpoints/subaccounts' require 'simple_spark/endpoints/suppression_list' diff --git a/lib/simple_spark/client.rb b/lib/simple_spark/client.rb index a2825ab..41b6d8d 100644 --- a/lib/simple_spark/client.rb +++ b/lib/simple_spark/client.rb @@ -155,5 +155,9 @@ def suppression_list def recipient_lists Endpoints::RecipientLists.new(self) end + + def recipient_validation + Endpoints::RecipientValidation.new(self) + end end end diff --git a/lib/simple_spark/endpoints/recipient_validation.rb b/lib/simple_spark/endpoints/recipient_validation.rb new file mode 100644 index 0000000..11984e2 --- /dev/null +++ b/lib/simple_spark/endpoints/recipient_validation.rb @@ -0,0 +1,31 @@ +module SimpleSpark + module Endpoints + # Provides access to the /recipient-validation endpoint + # @note Example validation + # { + # "valid": false, + # "result": "undeliverable", + # "reason": "Invalid Domain", + # "is_role": false, + # "is_disposable": false, + # "is_free": false + # } + # @note See: https://developers.sparkpost.com/api/recipient-validation/ + class RecipientValidation + attr_accessor :client + + def initialize(client) + @client = client + end + + # Validate a recipient email address. + # @param address [String] the email address to validate + # @return [Hash] a Recipient Validation hash object + # @note See: https://developers.sparkpost.com/api/recipient-validation/#recipient-validation-get-email-address-validation + def validate(address) + address = @client.url_encode(address) + @client.call(method: :get, path: "recipient-validation/single/#{address}") + end + end + end +end diff --git a/lib/simple_spark/version.rb b/lib/simple_spark/version.rb index 7bd03fb..a2a576e 100644 --- a/lib/simple_spark/version.rb +++ b/lib/simple_spark/version.rb @@ -1,3 +1,3 @@ module SimpleSpark - VERSION = "1.0.12" + VERSION = "1.0.13" end diff --git a/spec/simple_spark/client_spec.rb b/spec/simple_spark/client_spec.rb index 06467dd..bccbce1 100644 --- a/spec/simple_spark/client_spec.rb +++ b/spec/simple_spark/client_spec.rb @@ -104,6 +104,10 @@ specify { expect(client.recipient_lists.class).to eq(SimpleSpark::Endpoints::RecipientLists) } end + context 'recipient_validation' do + specify { expect(client.recipient_validation.class).to eq(SimpleSpark::Endpoints::RecipientValidation) } + end + end end end