Class: AmazonAuth::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon_auth/client.rb

Constant Summary collapse

INITIAL_ENTRY_URL =
'https://www.amazon.co.jp/'

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/amazon_auth/client.rb', line 5

def initialize(options = {})
  @url = options.fetch(:url) { INITIAL_ENTRY_URL }
  @login = options.fetch(:login) do
    if (amazon_username_code = ENV['AMAZON_USERNAME_CODE']).present?
      Converter.decode(amazon_username_code)
    else
      raise('AMAZON_USERNAME_CODE is required.')
    end
  end
  @password = options.fetch(:password) do
    if (amazon_password_code = ENV['AMAZON_PASSWORD_CODE']).present?
      Converter.decode(amazon_password_code)
    else
      raise('AMAZON_PASSWORD_CODE is required.')
    end
  end
end

Instance Method Details

#driverObject



62
63
64
# File 'lib/amazon_auth/client.rb', line 62

def driver
  @session.driver
end

#fill_in_with_stroke(dom_id, value) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/amazon_auth/client.rb', line 49

def fill_in_with_stroke(dom_id, value)
  sleep_s
  element = @session.first("##{dom_id}")
  value.split(//u).each do |char|
    element.send_keys(char)
    sleep rand
  end
end

#image_recognition_displayed?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/amazon_auth/client.rb', line 58

def image_recognition_displayed?
  @session.has_content?('お客様のアカウントを強力に保護するため') || @session.has_content?('問題が発生しました')
end

#inspectObject

Hide instance variables of credentials on console



71
72
73
# File 'lib/amazon_auth/client.rb', line 71

def inspect
  to_s
end

#retry_sign_inObject



42
43
44
45
46
47
# File 'lib/amazon_auth/client.rb', line 42

def 
  fill_in_with_stroke('ap_password', @password)
  input = ask "Got the prompt. Read characters from the image: "
  fill_in_with_stroke('auth-captcha-guess', input)
  @session.click_on('signInSubmit')
end

#sign_inObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/amazon_auth/client.rb', line 23

def 
  @session = Capybara::Session.new(:selenium)
  @session.visit @url
  @session.within('#nav-tools') do
    @session.click_on 'サインイン'
  end

  fill_in_with_stroke('ap_email', @login)
  fill_in_with_stroke('ap_password', @password)
  @session.click_on('signInSubmit')

  while image_recognition_displayed? do
    
  end

  @session.first('.nav-line-2').click
  @session
end

#sleep_s(sec = 2) ⇒ Object



66
67
68
# File 'lib/amazon_auth/client.rb', line 66

def sleep_s(sec = 2)
  sleep sec
end