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