class Mailgunner::Client

Constants

ATTRIBUTES

Public Class Methods

new(domain: nil, api_key: nil, api_host: nil) click to toggle source
# File lib/mailgunner/client.rb, line 7
def initialize(domain: nil, api_key: nil, api_host: nil)
  @domain = domain || Mailgunner.config.domain

  @api_key = api_key || Mailgunner.config.api_key

  @api_host = api_host || Mailgunner.config.api_host

  @http = Net::HTTP.new(@api_host, Net::HTTP.https_default_port)

  @http.use_ssl = true
end

Public Instance Methods

add_bounce(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 13
def add_bounce(attributes = ATTRIBUTES)
  post("/v3/#{escape @domain}/bounces", attributes)
end
add_complaint(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 49
def add_complaint(attributes = ATTRIBUTES)
  post("/v3/#{escape @domain}/complaints", attributes)
end
add_credentials(attributes) click to toggle source
# File lib/mailgunner/client/domains.rb, line 29
def add_credentials(attributes)
  post("/v3/domains/#{escape @domain}/credentials", attributes)
end
add_domain(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/domains.rb, line 13
def add_domain(attributes = ATTRIBUTES)
  post('/v3/domains', attributes)
end
add_ip(address) click to toggle source
# File lib/mailgunner/client/ips.rb, line 17
def add_ip(address)
  post("/v3/domains/#{escape @domain}/ips", ip: address)
end
add_list(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 13
def add_list(attributes = ATTRIBUTES)
  post('/v3/lists', attributes)
end
add_list_member(list_address, member_attributes) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 33
def add_list_member(list_address, member_attributes)
  post("/v3/lists/#{escape list_address}/members", member_attributes)
end
add_route(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/routes.rb, line 13
def add_route(attributes = ATTRIBUTES)
  post('/v3/routes', attributes)
end
add_unsubscribe(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 37
def add_unsubscribe(attributes = ATTRIBUTES)
  post("/v3/#{escape @domain}/unsubscribes", attributes)
end
add_webhook(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/webhooks.rb, line 13
def add_webhook(attributes = ATTRIBUTES)
  post("/v3/domains/#{escape @domain}/webhooks", attributes)
end
add_whitelist(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 65
def add_whitelist(attributes = ATTRIBUTES)
  post("/v3/#{escape @domain}/whitelists", attributes)
end
cancel_bulk_validation(list_id) click to toggle source
# File lib/mailgunner/client/email_validation.rb, line 21
def cancel_bulk_validation(list_id)
  delete("/v4/address/validate/bulk/#{escape list_id}")
end
create_bulk_validation(list_id) click to toggle source
# File lib/mailgunner/client/email_validation.rb, line 13
def create_bulk_validation(list_id)
  post("/v4/address/validate/bulk/#{escape list_id}")
end
delete_bounce(address) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 17
def delete_bounce(address)
  delete("/v3/#{escape @domain}/bounces/#{escape address}")
end
delete_bounces() click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 21
def delete_bounces
  delete("/v3/#{escape @domain}/bounces")
end
delete_complaint(address) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 53
def delete_complaint(address)
  delete("/v3/#{escape @domain}/complaints/#{escape address}")
end
delete_credentials(login) click to toggle source
# File lib/mailgunner/client/domains.rb, line 37
def delete_credentials(login)
  delete("/v3/domains/#{escape @domain}/credentials/#{escape login}")
end
delete_domain(name) click to toggle source
# File lib/mailgunner/client/domains.rb, line 17
def delete_domain(name)
  delete("/v3/domains/#{escape name}")
end
delete_ip(address) click to toggle source
# File lib/mailgunner/client/ips.rb, line 21
def delete_ip(address)
  delete("/v3/domains/#{escape @domain}/ips/#{escape address}")
end
delete_list(address) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 21
def delete_list(address)
  delete("/v3/lists/#{escape address}")
end
delete_list_member(list_address, member_address) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 41
def delete_list_member(list_address, member_address)
  delete("/v3/lists/#{escape list_address}/members/#{escape member_address}")
end
delete_message(key) click to toggle source
# File lib/mailgunner/client/messages.rb, line 25
def delete_message(key)
  delete("/v3/domains/#{escape @domain}/messages/#{escape key}")
end
delete_route(id) click to toggle source
# File lib/mailgunner/client/routes.rb, line 21
def delete_route(id)
  delete("/v3/routes/#{escape id}")
end
delete_tag(id) click to toggle source
# File lib/mailgunner/client/tags.rb, line 21
def delete_tag(id)
  delete("/v3/#{escape @domain}/tags/#{escape id}")
end
delete_unsubscribe(address_or_id) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 33
def delete_unsubscribe(address_or_id)
  delete("/v3/#{escape @domain}/unsubscribes/#{escape address_or_id}")
end
delete_webhook(id) click to toggle source
# File lib/mailgunner/client/webhooks.rb, line 21
def delete_webhook(id)
  delete("/v3/domains/#{escape @domain}/webhooks/#{escape id}")
end
delete_whitelist(address_or_domain) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 69
def delete_whitelist(address_or_domain)
  delete("/v3/#{escape @domain}/whitelists/#{escape address_or_domain}")
end
get_all_ips(params = PARAMS) click to toggle source
# File lib/mailgunner/client/ips.rb, line 5
def get_all_ips(params = PARAMS)
  get('/v3/ips', query: params)
end
get_bounce(address) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 9
def get_bounce(address)
  get("/v3/#{escape @domain}/bounces/#{escape address}")
end
get_bounces(params = PARAMS) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 5
def get_bounces(params = PARAMS)
  get("/v3/#{escape @domain}/bounces", query: params)
end
get_bulk_validation(list_id) click to toggle source
# File lib/mailgunner/client/email_validation.rb, line 17
def get_bulk_validation(list_id)
  get("/v4/address/validate/bulk/#{escape list_id}")
end
get_bulk_validations() click to toggle source
# File lib/mailgunner/client/email_validation.rb, line 9
def get_bulk_validations
  get('/v4/address/validate/bulk')
end
get_complaint(address) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 45
def get_complaint(address)
  get("/v3/#{escape @domain}/complaints/#{escape address}")
end
get_complaints(params = PARAMS) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 41
def get_complaints(params = PARAMS)
  get("/v3/#{escape @domain}/complaints", query: params)
end
get_connection_settings() click to toggle source
# File lib/mailgunner/client/domains.rb, line 41
def get_connection_settings
  get("/v3/domains/#{escape @domain}/connection")
end
get_credentials() click to toggle source
# File lib/mailgunner/client/domains.rb, line 25
def get_credentials
  get("/v3/domains/#{escape @domain}/credentials")
end
get_domain(name) click to toggle source
# File lib/mailgunner/client/domains.rb, line 9
def get_domain(name)
  get("/v3/domains/#{escape name}")
end
get_domains(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 5
def get_domains(params = PARAMS)
  get('/v3/domains', query: params)
end
get_events(params = PARAMS) click to toggle source
# File lib/mailgunner/client/events.rb, line 5
def get_events(params = PARAMS)
  get("/v3/#{escape @domain}/events", query: params)
end
get_ip(address) click to toggle source
# File lib/mailgunner/client/ips.rb, line 9
def get_ip(address)
  get("/v3/ips/#{escape address}")
end
get_ips() click to toggle source
# File lib/mailgunner/client/ips.rb, line 13
def get_ips
  get("/v3/domains/#{escape @domain}/ips")
end
get_list(address) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 9
def get_list(address)
  get("/v3/lists/#{escape address}")
end
get_list_member(list_address, member_address) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 29
def get_list_member(list_address, member_address)
  get("/v3/lists/#{escape list_address}/members/#{escape member_address}")
end
get_list_members(list_address, params = PARAMS) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 25
def get_list_members(list_address, params = PARAMS)
  get("/v3/lists/#{escape list_address}/members/pages", query: params)
end
get_lists(params = PARAMS) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 5
def get_lists(params = PARAMS)
  get('/v3/lists/pages', query: params)
end
get_message(key) click to toggle source
# File lib/mailgunner/client/messages.rb, line 5
def get_message(key)
  get("/v3/domains/#{escape @domain}/messages/#{escape key}")
end
get_mime_message(key) click to toggle source
# File lib/mailgunner/client/messages.rb, line 9
def get_mime_message(key)
  get("/v3/domains/#{escape @domain}/messages/#{escape key}", headers: {'Accept' => 'message/rfc2822'})
end
get_route(id) click to toggle source
# File lib/mailgunner/client/routes.rb, line 9
def get_route(id)
  get("/v3/routes/#{escape id}")
end
get_routes(params = PARAMS) click to toggle source
# File lib/mailgunner/client/routes.rb, line 5
def get_routes(params = PARAMS)
  get('/v3/routes', query: params)
end
get_tag(id) click to toggle source
# File lib/mailgunner/client/tags.rb, line 9
def get_tag(id)
  get("/v3/#{escape @domain}/tags/#{escape id}")
end
get_tag_stats(id, params) click to toggle source
# File lib/mailgunner/client/tags.rb, line 17
def get_tag_stats(id, params)
  get("/v3/#{escape @domain}/tags/#{escape id}/stats", query: params)
end
get_tags(params = PARAMS) click to toggle source
# File lib/mailgunner/client/tags.rb, line 5
def get_tags(params = PARAMS)
  get("/v3/#{escape @domain}/tags", query: params)
end
get_total_stats(params = PARAMS) click to toggle source
# File lib/mailgunner/client/stats.rb, line 5
def get_total_stats(params = PARAMS)
  get("/v3/#{escape @domain}/stats/total", query: params)
end
get_tracking_settings() click to toggle source
# File lib/mailgunner/client/domains.rb, line 49
def get_tracking_settings
  get("/v3/domains/#{escape @domain}/tracking")
end
get_unsubscribe(address) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 29
def get_unsubscribe(address)
  get("/v3/#{escape @domain}/unsubscribes/#{escape address}")
end
get_unsubscribes(params = PARAMS) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 25
def get_unsubscribes(params = PARAMS)
  get("/v3/#{escape @domain}/unsubscribes", query: params)
end
get_webhook(id) click to toggle source
# File lib/mailgunner/client/webhooks.rb, line 9
def get_webhook(id)
  get("/v3/domains/#{escape @domain}/webhooks/#{escape id}")
end
get_webhooks() click to toggle source
# File lib/mailgunner/client/webhooks.rb, line 5
def get_webhooks
  get("/v3/domains/#{escape @domain}/webhooks")
end
get_whitelist(address_or_domain) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 61
def get_whitelist(address_or_domain)
  get("/v3/#{escape @domain}/whitelists/#{escape address_or_domain}")
end
get_whitelists(params = PARAMS) click to toggle source
# File lib/mailgunner/client/suppressions.rb, line 57
def get_whitelists(params = PARAMS)
  get("/v3/#{escape @domain}/whitelists", query: params)
end
send_message(attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/messages.rb, line 13
def send_message(attributes = ATTRIBUTES)
  post("/v3/#{escape @domain}/messages", attributes)
end
send_mime(mail) click to toggle source
# File lib/mailgunner/client/messages.rb, line 17
def send_mime(mail)
  to = ['to', Array(mail.destinations).join(',')]

  message = ['message', mail.encoded, {filename: 'message.mime'}]

  multipart_post("/v3/#{escape @domain}/messages.mime", [to, message])
end
update_click_tracking_settings(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 57
def update_click_tracking_settings(params = PARAMS)
  put("/v3/domains/#{escape @domain}/tracking/click", params)
end
update_connection_settings(attributes) click to toggle source
# File lib/mailgunner/client/domains.rb, line 45
def update_connection_settings(attributes)
  put("/v3/domains/#{escape @domain}/connection", attributes)
end
update_credentials(login, attributes) click to toggle source
# File lib/mailgunner/client/domains.rb, line 33
def update_credentials(login, attributes)
  put("/v3/domains/#{escape @domain}/credentials/#{escape login}", attributes)
end
update_dkim_authority(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 65
def update_dkim_authority(params = PARAMS)
  put("/v3/domains/#{escape @domain}/dkim_authority", params)
end
update_dkim_selector(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 69
def update_dkim_selector(params = PARAMS)
  put("/v3/domains/#{escape @domain}/dkim_selector", params)
end
update_list(address, attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 17
def update_list(address, attributes = ATTRIBUTES)
  put("/v3/lists/#{escape address}", attributes)
end
update_list_member(list_address, member_address, member_attributes) click to toggle source
# File lib/mailgunner/client/mailing_lists.rb, line 37
def update_list_member(list_address, member_address, member_attributes)
  put("/v3/lists/#{escape list_address}/members/#{escape member_address}", member_attributes)
end
update_open_tracking_settings(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 53
def update_open_tracking_settings(params = PARAMS)
  put("/v3/domains/#{escape @domain}/tracking/open", params)
end
update_route(id, attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/routes.rb, line 17
def update_route(id, attributes = ATTRIBUTES)
  put("/v3/routes/#{escape id}", attributes)
end
update_tag(id, attributes) click to toggle source
# File lib/mailgunner/client/tags.rb, line 13
def update_tag(id, attributes)
  put("/v3/#{escape @domain}/tags/#{escape id}", attributes)
end
update_unsubscribe_tracking_settings(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 61
def update_unsubscribe_tracking_settings(params = PARAMS)
  put("/v3/domains/#{escape @domain}/tracking/unsubscribe", params)
end
update_web_prefix(params = PARAMS) click to toggle source
# File lib/mailgunner/client/domains.rb, line 73
def update_web_prefix(params = PARAMS)
  put("/v3/domains/#{escape @domain}/web_prefix", params)
end
update_webhook(id, attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client/webhooks.rb, line 17
def update_webhook(id, attributes = ATTRIBUTES)
  put("/v3/domains/#{escape @domain}/webhooks/#{escape id}", attributes)
end
validate_address(value) click to toggle source
# File lib/mailgunner/client/email_validation.rb, line 5
def validate_address(value)
  get('/v4/address/validate', query: {address: value})
end
verify_domain(name) click to toggle source
# File lib/mailgunner/client/domains.rb, line 21
def verify_domain(name)
  put("/v3/domains/#{escape name}/verify")
end

Private Instance Methods

delete(path) click to toggle source
# File lib/mailgunner/client.rb, line 46
def delete(path)
  transmit(Net::HTTP::Delete.new(path))
end
escape(component) click to toggle source
# File lib/mailgunner/client.rb, line 69
def escape(component)
  Params.escape(component)
end
get(path, query: PARAMS, headers: HEADERS) click to toggle source
# File lib/mailgunner/client.rb, line 23
def get(path, query: PARAMS, headers: HEADERS)
  uri = URI(path)
  uri.query = Params.encode(query) unless query.empty?

  request = Net::HTTP::Get.new(uri.to_s)

  headers.each { |k, v| request[k] = v }

  transmit(request)
end
multipart_post(path, data) click to toggle source
# File lib/mailgunner/client.rb, line 38
def multipart_post(path, data)
  transmit(Net::HTTP::Post.new(path)) { |message| message.set_form(data, 'multipart/form-data') }
end
post(path, attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client.rb, line 34
def post(path, attributes = ATTRIBUTES)
  transmit(Net::HTTP::Post.new(path)) { |message| message.set_form_data(attributes) }
end
put(path, attributes = ATTRIBUTES) click to toggle source
# File lib/mailgunner/client.rb, line 42
def put(path, attributes = ATTRIBUTES)
  transmit(Net::HTTP::Put.new(path)) { |message| message.set_form_data(attributes) }
end
transmit(message) { |message| ... } click to toggle source
# File lib/mailgunner/client.rb, line 50
def transmit(message)
  message.basic_auth('api', @api_key)
  message['User-Agent'] = Mailgunner.config.user_agent

  yield message if block_given?

  response = @http.request(message)

  unless response.is_a?(Net::HTTPSuccess)
    raise Error.parse(response)
  end

  if response['Content-Type']&.start_with?('application/json')
    return JSON.parse(response.body, object_class: Struct)
  end

  response.body
end