class OrderInformation

Attributes

name[RW]
phone_number[RW]

Public Instance Methods

confirm() click to toggle source
# File lib/order_information.rb, line 49
def confirm
  raise "Stopped by user" unless Ask.confirm "Continue?"

  Request.post("https://order.dominos.jp/eng/receipt/complete", @page_params,
               expect: :redirect, to: "https://order.dominos.jp/eng/menu/",
               failure: "Couldn't validate your information")
end
display() click to toggle source
# File lib/order_information.rb, line 38
def display
  doc = Nokogiri::HTML(@second_response.body)
  info = doc.css(".m-input__heading").map(&:text).
         zip(doc.css(".section_content_table_td").map(&:text)).to_h
  @page_params = doc.css("input[type=hidden]").map do |input|
    [input["name"], input["value"]]
  end.to_h

  info.each { |title, value| puts "#{title.colorize(:blue)}: #{value}" }
end
input() click to toggle source
# File lib/order_information.rb, line 5
def input
  response = Request.get("https://order.dominos.jp/eng/receipt/input/",
                         expect: :ok, failure: "Couldn't get information input page")

  saved_name = Name.from(response.body)
  phone_numbers = PhoneNumbers.from(response.body)

  self.name = Preferences.instance.name || Ask.input("Name", default: saved_name)

  self.phone_number = phone_numbers.find_number(Preferences.instance.phone_number)
  unless phone_number
    phone_number_index = Ask.list "Phone Number", phone_numbers.selection_list
    self.phone_number = phone_numbers[phone_number_index]
  end

  @first_response = response
end
validate() click to toggle source
# File lib/order_information.rb, line 23
def validate
  raise "Missing attributes" unless name && phone_number

  # Get the default parameters and add in the client name and phone number
  params = default_params.merge(
    "kokyakuNm" => name,
    "telSeq" => phone_number.value
  )

  @second_response = Request.post("https://order.dominos.jp/eng/receipt/confirm", params,
                                  expect: :ok, failure: "Couldn't set your information") do |resp|
    resp.body.include?("Order Type, Day&Time and Your Store")
  end
end

Private Instance Methods

default_params() click to toggle source
# File lib/order_information.rb, line 59
def default_params
  kokyaku_input = Nokogiri::HTML(@first_response.body).css("input[name=kokyakuC]").first
  raise "Couldn't find client information" unless kokyaku_input

  {
    "kokyakuC" => kokyaku_input["value"],
    # Rest is untouched
    "errorMessage" => "",
    "receiptMethod" => "1", # Receipt method again...
    "deleteTelSeq" => "",
    "telNoRadio" => "0",
    "telNo" => ""
  }
end