Class: Sendgrid::Toolkit

Inherits:
Object
  • Object
show all
Defined in:
app/services/sendgrid/toolkit.rb

Overview

Service object: toolkit.

Constant Summary collapse

PROFILES =

Profiles.

%i[warmlyyours warmlyyours_transaction warmlyyours_marketing].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Toolkit

Returns a new instance of Toolkit.



9
10
11
12
13
14
15
16
17
# File 'app/services/sendgrid/toolkit.rb', line 9

def initialize(options = {})
  require 'sendgrid-ruby'

  @logger = options[:logger] || Rails.logger
  @profile = options[:profile] || :warmlyyours
  api_key = Heatwave::Configuration.fetch(:sendgrid_api, @profile, :api_key)
  @api = SendGrid::API.new(api_key: options[:api_key] || api_key)
  @client = @api.client
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def api
  @api
end

#clientObject (readonly)

Returns the value of attribute client.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def client
  @client
end

#loggerObject (readonly)

Returns the value of attribute logger.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def logger
  @logger
end

Class Method Details

.delete_blocks(emails: []) ⇒ Object



43
44
45
46
47
# File 'app/services/sendgrid/toolkit.rb', line 43

def self.delete_blocks(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_blocks(emails: emails)
  end.flatten.uniq
end

.delete_bounces(emails: []) ⇒ Object



55
56
57
58
59
# File 'app/services/sendgrid/toolkit.rb', line 55

def self.delete_bounces(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_bounces(emails: emails)
  end.flatten.uniq
end

.delete_invalid_emails(emails: []) ⇒ Object



49
50
51
52
53
# File 'app/services/sendgrid/toolkit.rb', line 49

def self.delete_invalid_emails(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_invalid_emails(emails: emails)
  end.flatten.uniq
end

.delete_invalids(emails: []) ⇒ Object



37
38
39
40
41
# File 'app/services/sendgrid/toolkit.rb', line 37

def self.delete_invalids(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_invalids(emails: emails)
  end.flatten.uniq
end

.get_blocks(_query_params = {}) ⇒ Object



31
32
33
34
35
# File 'app/services/sendgrid/toolkit.rb', line 31

def self.get_blocks(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_blocks({})
  end.flatten.uniq
end

.get_bounces(_query_params = {}) ⇒ Object



19
20
21
22
23
# File 'app/services/sendgrid/toolkit.rb', line 19

def self.get_bounces(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_bounces({})
  end.flatten.uniq
end

.get_invalid_emails(_query_params = {}) ⇒ Object



25
26
27
28
29
# File 'app/services/sendgrid/toolkit.rb', line 25

def self.get_invalid_emails(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_invalid_emails({})
  end.flatten.uniq
end

Instance Method Details

#delete_blocks(emails: []) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'app/services/sendgrid/toolkit.rb', line 84

def delete_blocks(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.blocks.delete(request_body: data)
end

#delete_bounces(emails: []) ⇒ Object



104
105
106
107
108
109
110
111
112
# File 'app/services/sendgrid/toolkit.rb', line 104

def delete_bounces(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.bounces.delete(request_body: data)
end

#delete_invalid_emails(emails: []) ⇒ Object



94
95
96
97
98
99
100
101
102
# File 'app/services/sendgrid/toolkit.rb', line 94

def delete_invalid_emails(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.invalid_emails.delete(request_body: data)
end

#delete_invalids(emails: []) ⇒ Object



76
77
78
79
80
81
82
# File 'app/services/sendgrid/toolkit.rb', line 76

def delete_invalids(emails: [])
  r = []
  r << delete_blocks(emails: emails)
  r << delete_invalid_emails(emails: emails)
  r << delete_bounces(emails: emails)
  r
end

#get_blocks(query_params = {}) ⇒ Object



71
72
73
74
# File 'app/services/sendgrid/toolkit.rb', line 71

def get_blocks(query_params = {})
  response = client.suppression.blocks.get(query_params: query_params)
  response.parsed_body
end

#get_bounces(query_params = {}) ⇒ Object



61
62
63
64
# File 'app/services/sendgrid/toolkit.rb', line 61

def get_bounces(query_params = {})
  response = client.suppression.bounces.get(query_params: query_params)
  response.parsed_body
end

#get_invalid_emails(query_params = {}) ⇒ Object



66
67
68
69
# File 'app/services/sendgrid/toolkit.rb', line 66

def get_invalid_emails(query_params = {})
  response = client.suppression.invalid_emails.get(query_params: query_params)
  response.parsed_body
end