Class: SendgridTemplate::Template

Inherits:
Struct
  • Object
show all
Defined in:
lib/sendgrid_template/template.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Template

Returns a new instance of Template.



5
6
7
8
9
10
11
# File 'lib/sendgrid_template/template.rb', line 5

def initialize(attrs = {})
  super(
    attrs['id'],
    attrs['name'],
    attrs['versions'].map { |j| Version.new(j) }
  )
end

Instance Attribute Details

#idObject

Returns the value of attribute id

Returns:

  • (Object)

    the current value of id



4
5
6
# File 'lib/sendgrid_template/template.rb', line 4

def id
  @id
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



4
5
6
# File 'lib/sendgrid_template/template.rb', line 4

def name
  @name
end

#versionsObject

Returns the value of attribute versions

Returns:

  • (Object)

    the current value of versions



4
5
6
# File 'lib/sendgrid_template/template.rb', line 4

def versions
  @versions
end

Class Method Details

.all(connect: nil, opts: {}) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/sendgrid_template/template.rb', line 58

def all(connect: nil, opts: {})
  conn = connect || SendgridTemplate.configuration.connect
  req_opts = {
    page_size: 200,
    generations: 'legacy,dynamic'
  }.merge(opts)

  resp = MultiJson.load(
    conn.get('/v3/templates', req_opts).body
  )
  resp['result'].map do |attrs|
    Template.new(attrs)
  end
end

.find(template_id, connect: nil) ⇒ Object



73
74
75
76
77
78
79
80
81
# File 'lib/sendgrid_template/template.rb', line 73

def find(template_id, connect: nil)
  conn = connect || SendgridTemplate.configuration.connect
  response = conn.get("/v3/templates/#{template_id}")
  if response.success?
    Template.new(MultiJson.load(response.body))
  else
    # raise
  end
end

Instance Method Details

#attributesObject



13
14
15
# File 'lib/sendgrid_template/template.rb', line 13

def attributes
  Hash[each_pair.to_a]
end

#attributes=(attrs) ⇒ Object



17
18
19
20
21
# File 'lib/sendgrid_template/template.rb', line 17

def attributes=(attrs)
  attrs.each do |k, v|
    self[k.to_sym] = v if respond_to?(k)
  end
end

#createObject



36
37
38
39
40
41
42
43
# File 'lib/sendgrid_template/template.rb', line 36

def create
  # create
  response = SendgridTemplate.configuration.connect.post('/v3/templates/') do |req|
    req.headers[:content_type] = 'application/json'
    req.body = MultiJson.dump(attributes.reject { |k, v| v.nil? || k.to_s[/id|_id\Z/] })
  end
  self.attributes = response.body if response.success?
end

#delete(force = false) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sendgrid_template/template.rb', line 45

def delete(force = false)
  if versions.empty?
    SendgridTemplate.configuration.connect.delete("/v3/templates/#{id}").success?
  else
    return false unless force

    versions.each(&:delete)
    self.versions = []
    delete
  end
end

#saveObject



23
24
25
# File 'lib/sendgrid_template/template.rb', line 23

def save
  id.nil? ? create : update
end

#updateObject



27
28
29
30
31
32
33
34
# File 'lib/sendgrid_template/template.rb', line 27

def update
  response = SendgridTemplate.configuration.connect.patch("/v3/templates/#{id}") do |req|
    req.headers[:content_type] = 'application/json'
    req.body = MultiJson.dump(attributes.reject { |k, v| v.nil? || k.to_s[/id|_id\Z/] })
  end

  self.attributes = response.body if response.success?
end