class CustomersMailCloud::Transaction

Attributes

server_composition[RW]

Public Class Methods

new(type, client) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 3
def initialize type, client
  @client = client
  @type = type
  @server_composition = nil
  @base_url = 'https://api.smtps.jp/transaction/v2/__TYPE__/__ACTION__.json'
  @params = {}
end

Public Instance Methods

date=(date) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 65
def date= date
  @params[:date] = date.strftime('%Y-%m-%d')
end
email=(address) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 49
def email= address
  @params[:email] = address
end
end_date=(date) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 61
def end_date= date
  @params[:end_date] = date.strftime('%Y-%m-%d')
end
hour=(hour) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 69
def hour= hour
  if hour < 0 || hour > 23
    raise Error.new('hour allows the range from 0 to 23.')
  end
  @params[:hour] = hour
end
limit=(limit) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 87
def limit= limit
  @params[:r] = limit
end
list() click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 17
def list
  params = @params
  params[:api_user] = @client.api_user
  params[:api_key] = @client.api_key
  unless @server_composition
    raise Error.new('Server Composition is required.')
  end
  params[:server_composition] = @server_composition
  headers = {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
  uri = URI.parse url('list')
  req = Net::HTTP::Post.new(uri.path)
  req.body = params.to_json
  headers.each do |k, v|
    req[k] = v
  end
  http = Net::HTTP.new uri.host, uri.port
  http.use_ssl = true
  response = http.request req
  if response.code == '200' || response.code == '204'
    return [] if response.body.nil?
    return JSON.parse(response.body)[@type]
  else
    message = JSON.parse(response.body)['errors'].map do |error|
      "#{error['message']} (#{error['code']})"
    end.join(" ")
    raise Error.new message
  end
end
minute=(minute) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 76
def minute= minute
  if minute < 0 || minute > 59
    raise Error.new('minute allows the range from 0 to 59.')
  end
  @params[:minute] = minute
end
page=(page) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 83
def page= page
  @params[:p] = page
end
start_date=(date) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 57
def start_date= date
  @params[:start_date] = date.strftime('%Y-%m-%d')
end
status=(status) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 53
def status= status
  @params[:status] = status
end
url(action) click to toggle source
# File lib/customers_mail_cloud/transaction.rb, line 13
def url action
  @base_url.gsub('__TYPE__', @type).gsub('__ACTION__', action)
end