class Akashiyaki::Client

Constants

DAKOKU_FORM_FIELDS
DAKOKU_FORM_ID
DAKOKU_PAGE_TITLE_RE
DAKOKU_REQUEST_HEADERS
DAKOKU_TYPES
DEFAULT_REQUEST_HEADERS
LOGIN_FORM_FIELDS
LOGIN_FORM_ID
LOGIN_URL

Public Class Methods

new(company_id, login_id, password) click to toggle source
# File lib/akashiyaki/client.rb, line 40
def initialize(company_id, login_id, password)
  @account = {
    company_id: company_id,
    login_id: login_id,
    password: password,
  }.freeze
end

Public Instance Methods

finish_break() click to toggle source
# File lib/akashiyaki/client.rb, line 72
def finish_break
  res = dakoku(DAKOKU_TYPES[:finish_break])
  res.code
end
finish_work() click to toggle source
# File lib/akashiyaki/client.rb, line 62
def finish_work
  res = dakoku(DAKOKU_TYPES[:finish_work])
  res.code
end
login() click to toggle source
# File lib/akashiyaki/client.rb, line 48
def login
  @account.each do |field, value|
    login_form[LOGIN_FORM_FIELDS[field]] = value
  end
  res = login_form.submit
  raise NotAuthorized, "failed to log in" unless res.title =~ DAKOKU_PAGE_TITLE_RE
  res
end
start_break() click to toggle source
# File lib/akashiyaki/client.rb, line 67
def start_break
  res = dakoku(DAKOKU_TYPES[:start_break])
  res.code
end
start_work() click to toggle source
# File lib/akashiyaki/client.rb, line 57
def start_work
  res = dakoku(DAKOKU_TYPES[:start_work])
  res.code
end

Private Instance Methods

agent() click to toggle source
# File lib/akashiyaki/client.rb, line 79
def agent
  @agent ||= Mechanize.new.tap do |a|
    a.user_agent_alias = "Mac Mozilla"
    a.request_headers = DEFAULT_REQUEST_HEADERS
  end
end
authenticity_token() click to toggle source
# File lib/akashiyaki/client.rb, line 86
def authenticity_token
  dakoku_form[DAKOKU_FORM_FIELDS[:authenticity_token]]
end
dakoku(type) click to toggle source
# File lib/akashiyaki/client.rb, line 90
def dakoku(type)
  dakoku_form[DAKOKU_FORM_FIELDS[:local_time]] = Time.now.iso8601
  dakoku_form[DAKOKU_FORM_FIELDS[:type]] = type
  dakoku_form.submit(nil, dakoku_headers)
end
dakoku_form() click to toggle source
# File lib/akashiyaki/client.rb, line 102
def dakoku_form
  @dakoku_form ||= dakoku_page.form_with(id: DAKOKU_FORM_ID)
end
dakoku_headers() click to toggle source
# File lib/akashiyaki/client.rb, line 96
def dakoku_headers
  DAKOKU_REQUEST_HEADERS.merge(
    "X-CSRF-Token" => authenticity_token
  )
end
dakoku_page() click to toggle source
# File lib/akashiyaki/client.rb, line 106
def dakoku_page
  @dakoku_page ||= login
end
login_form() click to toggle source
# File lib/akashiyaki/client.rb, line 110
def login_form
  @login_form ||= login_page.form_with(id: LOGIN_FORM_ID)
end
login_page() click to toggle source
# File lib/akashiyaki/client.rb, line 114
def login_page
  @login_page ||= agent.get(LOGIN_URL)
end