Class: Mailgun::List

Inherits:
Object
  • Object
show all
Defined in:
lib/mailgun/list.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mailgun) ⇒ List

Used internally



11
12
13
# File 'lib/mailgun/list.rb', line 11

def initialize(mailgun)
  @mailgun = mailgun
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



105
106
107
108
109
# File 'lib/mailgun/list.rb', line 105

def method_missing(name, *args)
  if properties.has_key?(name.to_s)
    @properties[name.to_s]
  end
end

Instance Attribute Details

#propertiesObject

Returns the value of attribute properties.



8
9
10
# File 'lib/mailgun/list.rb', line 8

def properties
  @properties
end

Instance Method Details

#add_member(params = {}) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/mailgun/list.rb', line 59

def add_member(params={})

  if params.class == String
    add_member_by_name(params)
  end

  if params.class == Hash
    add_member_by_hash(params)
  end

  if params.class == Array
    add_members(params)
  end

  find(self.address)

end

#create(list_name, options = {}) ⇒ Object

Create a mailing list with a given address



27
28
29
30
31
32
# File 'lib/mailgun/list.rb', line 27

def create(list_name, options={})
  params = {:address => list_name}
  @mailgun.response = Mailgun::Base.fire(:post, list_url, params.merge(options))
  find(list_name)
  self
end

#deleteObject

Deletes a mailing list with a given address



44
45
46
# File 'lib/mailgun/list.rb', line 44

def delete
  @mailgun.response = Mailgun::Base.fire(:delete, list_url(self.address))
end

#find(list_name) ⇒ Object

List a single mailing list by a given address



21
22
23
24
# File 'lib/mailgun/list.rb', line 21

def find(list_name)
  response = Mailgun::Base.fire(:get, list_url(list_name))
  @properties = response["list"]
end

#find_member(address) ⇒ Object



86
87
88
# File 'lib/mailgun/list.rb', line 86

def find_member(address)
  @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/members/#{address}")
end

#list(options = {}) ⇒ Object

List all mailing lists



16
17
18
# File 'lib/mailgun/list.rb', line 16

def list(options={})
  @mailgun.response = Mailgun::Base.fire(:get, list_url, options)["items"] || []
end

#membersObject



49
50
51
# File 'lib/mailgun/list.rb', line 49

def members
  @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/members")["items"] || []
end

#remove_member(address) ⇒ Object



91
92
93
94
95
# File 'lib/mailgun/list.rb', line 91

def remove_member(address)
  @mailgun.response = Mailgun::Base.fire(:delete, list_url(self.address) + "/members/#{address}")
  find(self.address)
  self
end

#send_message(message, params = {}) ⇒ Object



98
99
100
101
102
# File 'lib/mailgun/list.rb', line 98

def send_message(message, params={})
  params[:to] = self.address
  params.merge!(message.parameters)
  @mailgun.response = Mailgun::Base.fire(:post, "#{@mailgun.api_url}/#{@mailgun.domain}/messages", params)
end

#statsObject



54
55
56
# File 'lib/mailgun/list.rb', line 54

def stats
  @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/stats")
end

#update(params = {}) ⇒ Object

Update a mailing list with a given address with an optional new address, name or description



36
37
38
39
40
41
# File 'lib/mailgun/list.rb', line 36

def update(params={})
  return unless !params.empty?
  @mailgun.response = Mailgun::Base.fire(:put, list_url(self.address), params)
  find(self.address)
  self
end

#update_member(address, params = {}) ⇒ Object



78
79
80
81
82
83
# File 'lib/mailgun/list.rb', line 78

def update_member(address, params={})
  return unless !params.empty?
  @mailgun.response = Mailgun::Base.fire(:put, list_url(self.address) + "/members/#{address}", params)
  find(self.address)
  self
end