Class: AmazonAuth::Client

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SessionExtension

#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_urlObject

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

Returns:

  • (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

Returns:

  • (Boolean)


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

def image_recognition_displayed?
  session.has_selector?('#auth-captcha-image-container')
end

#inspectObject

Hide instance variables of credentials on console



74
75
76
# File 'lib/amazon_auth/client.rb', line 74

def inspect
  to_s
end

#retry_signin_form_with_image_recognitionObject



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

def 
  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

#sessionObject



69
70
71
# File 'lib/amazon_auth/client.rb', line 69

def session
  @session ||= Capybara::Session.new(@driver)
end

#sign_inObject



29
30
31
32
33
34
# File 'lib/amazon_auth/client.rb', line 29

def 
  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
  
end

#submit_signin_formObject



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/amazon_auth/client.rb', line 36

def 
  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
    
  end
  true
end