class Mailgun::List

Mailing List functionality Refer documentation.mailgun.net/api-mailinglists.html for optional parameters

Attributes

properties[RW]

Public Class Methods

new(mailgun) click to toggle source

Used internally

# File lib/mailgun/list.rb, line 11
def initialize(mailgun)
  @mailgun = mailgun
end

Public Instance Methods

add_member(params={}) click to toggle source
# 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={}) click to toggle source

Create a mailing list with a given address

# 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
delete() click to toggle source

Deletes a mailing list with a given address

# File lib/mailgun/list.rb, line 44
def delete
  @mailgun.response = Mailgun::Base.fire(:delete, list_url(self.address))
end
find(list_name) click to toggle source

List a single mailing list by a given address

# 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) click to toggle source
# 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={}) click to toggle source

List all mailing lists

# File lib/mailgun/list.rb, line 16
def list(options={})
  @mailgun.response = Mailgun::Base.fire(:get, list_url, options)["items"] || []
end
members() click to toggle source
# File lib/mailgun/list.rb, line 49
def members
  @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/members")["items"] || []
end
method_missing(name, *args) click to toggle source
# 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
remove_member(address) click to toggle source
# 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={}) click to toggle source
# 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
stats() click to toggle source
# File lib/mailgun/list.rb, line 54
def stats
  @mailgun.response = Mailgun::Base.fire(:get, list_url(self.address) + "/stats")
end
update(params={}) click to toggle source

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

# 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={}) click to toggle source
# 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

Private Instance Methods

add_member_by_hash(params) click to toggle source
# File lib/mailgun/list.rb, line 125
def add_member_by_hash(params)
  @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members", params)
end
add_member_by_name(params) click to toggle source
# File lib/mailgun/list.rb, line 118
def add_member_by_name(params)
  address = params
  params = {}
  params[:address] = address
  @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members", params)
end
add_members(members) click to toggle source
# File lib/mailgun/list.rb, line 130
def add_members(members)
  members.each_slice(1000).each do |members_chunk|
    params = {}
    params['members'] = members_chunk.to_json
    @mailgun.response = Mailgun::Base.fire(:post, list_url(self.address) + "/members.json", params)
  end
end
list_url(address=nil) click to toggle source

Helper method to generate the proper url for Mailgun mailbox API calls

# File lib/mailgun/list.rb, line 142
def list_url(address=nil)
  "#{@mailgun.api_url}/lists#{'/' + address if address}"
end