Class: AmazonAuth::Client

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

Instance Attribute Summary collapse

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 = {})
  @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
end

Instance Attribute Details

#initial_urlObject

Returns the value of attribute initial_url.



3
4
5
# File 'lib/amazon_auth/client.rb', line 3

def initial_url
  @initial_url
end

Instance Method Details

#alert_displayed?Boolean

Returns:

  • (Boolean)


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

def alert_displayed?
  session.has_selector?('.a-alert-container')
end

#driverObject



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

def driver
  session.driver
end

#fill_in_with_stroke(dom_id, value) ⇒ Object



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

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)


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

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

#inspectObject

Hide instance variables of credentials on console



78
79
80
# File 'lib/amazon_auth/client.rb', line 78

def inspect
  to_s
end

#retry_sign_inObject



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

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

#sessionObject



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

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

#sign_inObject



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

def 
  session.visit initial_url
  session.first('#a-autoid-0-announce').click

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

  while alert_displayed? do
    
  end

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

#sleep_s(sec = 2) ⇒ Object



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

def sleep_s(sec = 2)
  sleep sec
end