Class: Sendgrid::Toolkit

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

Constant Summary collapse

PROFILES =
%i[warmlyyours warmlyyours_transaction warmlyyours_marketing]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Toolkit

Returns a new instance of Toolkit.



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

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.



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

def api
  @api
end

#clientObject (readonly)

Returns the value of attribute client.



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

def client
  @client
end

#loggerObject (readonly)

Returns the value of attribute logger.



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

def logger
  @logger
end

Class Method Details

.delete_blocks(emails: []) ⇒ Object



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

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

.delete_bounces(emails: []) ⇒ Object



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

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



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

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



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

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



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

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

.get_bounces(query_params = {}) ⇒ Object



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

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

.get_invalid_emails(query_params = {}) ⇒ Object



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

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

Instance Method Details

#delete_blocks(emails: []) ⇒ Object



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

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

#delete_bounces(emails: []) ⇒ Object



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

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

#delete_invalid_emails(emails: []) ⇒ Object



94
95
96
97
98
99
100
101
102
103
# 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
  response = client.suppression.invalid_emails.delete(request_body: data)
  response
end

#delete_invalids(emails: []) ⇒ Object



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

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



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

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

#get_bounces(query_params = {}) ⇒ Object



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

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

#get_invalid_emails(query_params = {}) ⇒ Object



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

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