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