class Iiko::Web

Constants

IIKO_USER_AGENT

Attributes

agent[R]
files[R]
headers[R]
logged[R]
result[R]
settings[R]

Public Class Methods

new(settings) click to toggle source
# File lib/iiko/web.rb, line 9
def initialize(settings)
  @settings = settings # :url, :user, :password, :user_agent
  validate_arguments

  @agent = Mechanize.new { |agent| agent.user_agent = settings[:user_agent] || IIKO_USER_AGENT }

  #default_headers = { "Accept-Language" => 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4' }
  #@headers = settings[:headers] ? settings[:headers].merge(default_headers) : default_headers
end

Public Instance Methods

goods(file_name = nil) click to toggle source
# File lib/iiko/web.rb, line 37
def goods(file_name = nil)
  login unless logged

  @result = agent.get(service_url(:goods))
  write_file(file_name, 'goods', 'csv')
end
login() click to toggle source
# File lib/iiko/web.rb, line 19
def login
  agent.get(service_url) do |login_page|
    @result = login_page.form_with(name: 'f') do |form|
      form.j_username = settings[:user]
      form.j_password = settings[:password]
    end.submit
    # TODO: Check success login
    @logged = true
  end
end
ttk(file_name = nil) click to toggle source
# File lib/iiko/web.rb, line 30
def ttk(file_name = nil)
  login unless logged

  @result = agent.get(service_url(:ttk))
  write_file(file_name, 'ttk', 'csv')
end

Private Instance Methods

extra_file(name, extension) click to toggle source
# File lib/iiko/web.rb, line 57
def extra_file(name, extension)
  Tempfile.new([name, ".#{extension}"], encoding: 'ascii-8bit')
end
service_url(service = nil) click to toggle source
# File lib/iiko/web.rb, line 67
def service_url(service = nil)
  routes = {
    ttk: '/service/export/csv/assemblyCharts.csv',
    goods: '/service/export/csv/goods.csv',
  }

  [settings[:url], routes[service]].join
end
validate_arguments() click to toggle source
# File lib/iiko/web.rb, line 61
def validate_arguments
  [:url, :user, :password].each do |arg|
    raise ArgumentError, "#{arg} is required" unless settings[arg]
  end
end
write_file(file_name = nil, name, extension) click to toggle source
# File lib/iiko/web.rb, line 46
def write_file(file_name = nil, name, extension)
  unless file_name
    file = extra_file(name, extension)
    #file.write(result.body)
    file.close
    file_name = file.path
  end
  File.write(file_name, result.body, mode: 'wb')
  file_name
end