class Racked

Attributes

secret_hash[RW]

include Singleton

server_host[RW]

include Singleton

user_key[RW]

include Singleton

version_prefix[RW]

include Singleton

Public Class Methods

new(options) click to toggle source
# File lib/racked.rb, line 37
def initialize(options)
  check_options(options, [:server_host, :version_prefix, :user_key, :secret_hash])
  @server_host = options[:server_host]
  @version_prefix = options[:version_prefix]
  @user_key = options[:user_key]
  @secret_hash = options[:secret_hash]
  #read config file
  # @server = Server.new(MAIL_CFG["server"], MAIL_CFG["version_prefix"], MAIL_CFG["user_key"], MAIL_CFG["secret_hash"])
  @server = Server.new(options[:server_host], options[:version_prefix], options[:user_key], options[:secret_hash])
  @server.xml_format
      
end

Public Instance Methods

add_customer(options) click to toggle source
# File lib/racked.rb, line 143
def add_customer(options)
  check_options(options, [:data_fields_hash])
  #add a customer account
  response = @server.post  "/customers", @data_fields_hash, @server.json_format
  return response
end
add_domain(options) click to toggle source
# File lib/racked.rb, line 154
def add_domain(options)
  check_options(options, [:domain, :customer_number, :data_fields_hash])
  #add a domain
  response = @server.post  "/customers/#{@customer_number}/domains/#{@domain}", @data_fields_hash, @server.json_format
  return response
end
create_mailbox(options) click to toggle source
# File lib/racked.rb, line 110
def create_mailbox(options)
  check_options(options, [:domain, :customer_number, :mailbox_type, :mailbox, :data_fields_hash])
  #create a customer mailbox
  response = @server.post  "/customers/#{@customer_number}/domains/#{@domain}/#{@mailbox_type}/mailboxes/#{@mailbox}", @data_fields_hash, @server.json_format
  # puts response.inspect
  # puts response['x-error-message']
  # puts response.body.inspect
  return response
  #response = JSON.parse(response.body )
end
delete_customer(options) click to toggle source
# File lib/racked.rb, line 149
def delete_customer(options)
  check_options(options, [:customer_number])
  response = @server.delete  "/customers/#{@customer_number}", @server.json_format
  return response
end
delete_domain(options) click to toggle source
# File lib/racked.rb, line 160
def delete_domain(options)
  check_options(options, [:domain, :customer_number])
  response = @server.delete  "/customers/#{@customer_number}/domains/#{@domain}", @server.json_format
  return response
end
delete_mailbox(options) click to toggle source
# File lib/racked.rb, line 132
def delete_mailbox(options)
  #delete a customer mailbox
  check_options(options, [:domain, :customer_number, :mailbox_type, :mailbox])
  response = @server.delete  "/customers/#{@customer_number}/domains/#{@domain}/#{@mailbox_type}/mailboxes/#{@mailbox}", @server.json_format
  # puts response.inspect
  # puts response['x-error-message']
  # puts response.body.inspect
  return response
  #response = JSON.parse(response.body )
end
get_domain_info(options) click to toggle source
# File lib/racked.rb, line 50
def get_domain_info(options)
  check_options(options, [:domain, :customer_number])
  response = @server.get  "/customers/#{@customer_number}/domains/#{@domain}", @server.json_format
end
get_last_login(account_details_for_soap = {}, mailbox) click to toggle source
# File lib/racked.rb, line 95
def get_last_login(account_details_for_soap = {}, mailbox)
  #TO DO: need to rethink
  check_options(options, [:mailbox])
  
  self.account_details_for_soap(options[:account_details])
  driver = UtilsSoapPort.new
  # driver.wiredump_dev = STDOUT

  res = driver.GetUserLastLogin(@account_details[:resellerUsername], @account_details[:resellerPassword], @account_details[:hostName], @mailbox, @account_details[:lastlogin])
  # if res[1].class == String && !res[1].empty?
  #   puts "yes"
  # end
  return res
end
get_mailbox_details(options) click to toggle source
# File lib/racked.rb, line 77
def get_mailbox_details(options)
  check_options(options, [:domain, :customer_number, :mailbox_type, :mailbox])
  
  #get mailbox details
  response = @server.get  "/customers/#{@customer_number}/domains/#{@domain}/#{@mailbox_type}/mailboxes/" + @mailbox, @server.json_format
  puts response.inspect
  puts response['x-error-message']
  # response = JSON.parse(response)
  puts response.code
  puts response.body
  # puts response.inspect
  #TO DO: error checking
  # returning [] do |mailboxes|
  #   response["rsMailboxes"].each {|c| mailboxes << Mailbox.new(c) }
  # end
  return response
end
get_mailboxes(size=50, offset=0) click to toggle source
# File lib/racked.rb, line 55
def get_mailboxes(size=50, offset=0)
  check_options(options, [:domain, :customer_number, :mailbox_type])
  size = options[:size] || 50
  offset = options[:offset] || 0
  #get customer list
  response = @server.get  "/customers/#{@customer_number}/domains/#{@domain}/#{@mailbox_type}/mailboxes/?size=" + size.to_s + '&offset=' + offset.to_s, @server.json_format
  puts response.inspect
  # puts response['x-error-message']
  # puts response.body
  response = JSON.parse(response.body )
  # puts response.inspect
  #TO DO: error checking
  # returning [] do |mailboxes|
  #   response["rsMailboxes"].each {|c| mailboxes << Mailbox.new(c) }
  # end
  mailboxes = []
  response["rsMailboxes"].each do |mailbox|
    puts 'mailbox - ' + mailbox["name"]
    #mailboxes << Mailbox.new(mailbox)
    mailboxes << mailbox
  end
end
update_mailbox(options) click to toggle source
# File lib/racked.rb, line 121
def update_mailbox(options)
  check_options(options, [:domain, :customer_number, :mailbox_type, :mailbox, :data_fields_hash])
  #update a customer mailbox
  response = @server.put  "/customers/#{@customer_number}/domains/#{@domain}/#{@mailbox_type}/mailboxes/#{@mailbox}", @data_fields_hash, @server.json_format
  # puts response.inspect
  # puts response['x-error-message']
  # puts response.body.inspect
  return response
  #response = JSON.parse(response.body )
end

Private Instance Methods

check_account_details(account_details) click to toggle source
# File lib/racked.rb, line 167
def check_account_details(account_details)
  raise ArgumentError, 'Argument missing! account_details[:customer_number] missing.' unless account_details[:customer_number].empty? || account_details.include?(:customer_number)
  raise ArgumentError, 'Argument missing! account_details[:domain_name] missing.' unless account_details[:domain_name].empty? || account_details.include?(:domain_name)
  @account_details = account_details
end
check_options(supplied_options_hash, options_to_check) click to toggle source
# File lib/racked.rb, line 173
def check_options(supplied_options_hash, options_to_check)
  supplied_options_hash[:mailbox_type] ||= "rs"
  missing_options = []
  options_to_check.each do |opt|
    missing_options << opt if !supplied_options_hash[opt] || supplied_options_hash[opt].empty?
  end
  raise ArgumentError, "Argument(s) missing! You need to supply :#{missing_options.join(", :")}" unless missing_options.empty?

  @customer_number  = supplied_options_hash[:customer_number]
  @domain           = supplied_options_hash[:domain]
  @mailbox_type     = supplied_options_hash[:mailbox_type]
  @mailbox          = supplied_options_hash[:mailbox]
  @data_fields_hash = supplied_options_hash[:data_fields_hash]

end