Class: AmazonAuth::Client
Instance Attribute Summary collapse
Instance Method Summary
collapse
#doc, #links_for, #wait_for_selector
Constructor Details
#initialize(options = {}) ⇒ Client
Returns a new instance of Client.
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/amazon_auth/client.rb', line 7
def initialize(options = {})
@initial_url = options.fetch(:url) { "https://www.#{AmazonInfo.domain}/" }
@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
@driver = options.fetch(:driver, :selenium)
rescue => e
puts "Please setup credentials of amazon_auth gem with folloing its instruction."
raise e
end
|
Instance Attribute Details
#initial_url ⇒ Object
Returns the value of attribute initial_url.
5
6
7
|
# File 'lib/amazon_auth/client.rb', line 5
def initial_url
@initial_url
end
|
Instance Method Details
#alert_displayed? ⇒ Boolean
61
62
63
|
# File 'lib/amazon_auth/client.rb', line 61
def alert_displayed?
session.has_selector?('.a-alert-error')
end
|
#image_recognition_displayed? ⇒ Boolean
65
66
67
|
# File 'lib/amazon_auth/client.rb', line 65
def image_recognition_displayed?
session.has_selector?('#auth-captcha-image-container')
end
|
#inspect ⇒ Object
Hide instance variables of credentials on console
74
75
76
|
# File 'lib/amazon_auth/client.rb', line 74
def inspect
to_s
end
|
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/amazon_auth/client.rb', line 49
def retry_signin_form_with_image_recognition
return true unless session.has_selector?('#signInSubmit')
session.fill_in 'ap_password', with: @password
if image_recognition_displayed?
input = ask "Got the prompt. Read characters from the image: "
session.fill_in 'auth-captcha-guess', with: input
end
sleep 1
session.click_on('signInSubmit')
sleep 2
end
|
#session ⇒ Object
69
70
71
|
# File 'lib/amazon_auth/client.rb', line 69
def session
@session ||= Capybara::Session.new(@driver)
end
|
#sign_in ⇒ Object
29
30
31
32
33
34
|
# File 'lib/amazon_auth/client.rb', line 29
def sign_in
session.visit initial_url
link = links_for('#nav-signin-tooltip a').find{|link| link =~ %r{\A/gp/navigation/redirector.html} }
session.visit(link) if link
submit_signin_form
end
|
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/amazon_auth/client.rb', line 36
def submit_signin_form
return true unless session.has_selector?('#signInSubmit')
session.fill_in 'ap_email', with: @login
session.fill_in 'ap_password', with: @password
session.click_on('signInSubmit')
raise('Failed on signin') if alert_displayed?
while image_recognition_displayed? do
retry_signin_form_with_image_recognition
end
true
end
|