class TempMailRu::Api

Attributes

email[RW]

Public Class Methods

new(email = nil, protocol = "http") click to toggle source
# File lib/tempmailru/api.rb, line 9
def initialize(email = nil, protocol = "http")
  @protocol = protocol
  @url = "#{protocol}://#{TempMailRu::HOST}"
  @email = email
end

Public Instance Methods

delete() click to toggle source
# File lib/tempmailru/api.rb, line 64
def delete
  hash = Digest::MD5.hexdigest(@email)
  send_request("request/delete/id/#{hash}")[:data]
end
domains() click to toggle source
# File lib/tempmailru/api.rb, line 42
def domains
  send_request("request/domains")[:data]
end
inbox() click to toggle source
# File lib/tempmailru/api.rb, line 54
def inbox
  hash = Digest::MD5.hexdigest(@email)
  send_request("request/mail/id/#{hash}")[:data]
end
source() click to toggle source
# File lib/tempmailru/api.rb, line 59
def source
  hash = Digest::MD5.hexdigest(@email)
  send_request("request/source/id/#{hash}")[:data]
end

Protected Instance Methods

handle_result(data) click to toggle source
# File lib/tempmailru/api.rb, line 46
def handle_result(data)
  unless data[:http_code].to_i == 200
    data[:is_error] = true
  end
  data
end
send_request(path) click to toggle source
# File lib/tempmailru/api.rb, line 15
def send_request(path)
  begin
    request_data = {}

    uri = URI.parse("#{@url}/#{path}/format/json")

    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true if @protocol == 'https'

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

    response = http.request(request)

    if response.code.to_i == 401
      return send_request(path)
    else
      request_data[:data] = JSON.parse(response.body, symbolize_names: true)
      request_data[:http_code] = response.code
    end
  rescue Exception => e
    raise "Exception \n message: #{e.message} \n backtrace: #{e.backtrace}"
  end

  handle_result(request_data)
end