Class: AtreaControl::Duplex::Login
- Inherits:
-
Object
- Object
- AtreaControl::Duplex::Login
- Includes:
- Logger
- Defined in:
- lib/atrea_control/duplex/login.rb
Overview
Process login into RD5 to get ‘sid` ( auth_token ) for direct API communication
Class Method Summary collapse
-
.user_tokens(login:, password:) ⇒ Hash
-
user_id, unit_id, sid.
-
Instance Method Summary collapse
-
#call ⇒ Hash
Perform login procedure for retrieve ‘sid` (auth_token).
-
#initialize(login:, password:) ⇒ Login
constructor
A new instance of Login.
Methods included from Logger
Constructor Details
#initialize(login:, password:) ⇒ Login
Returns a new instance of Login.
21 22 23 24 |
# File 'lib/atrea_control/duplex/login.rb', line 21 def initialize(login:, password:) @login = login @password = password end |
Class Method Details
.user_tokens(login:, password:) ⇒ Hash
Returns - user_id, unit_id, sid.
14 15 16 17 |
# File 'lib/atrea_control/duplex/login.rb', line 14 def self.user_tokens(login:, password:) instance = new(login: login, password: password) instance.call end |
Instance Method Details
#call ⇒ Hash
Perform login procedure for retrieve ‘sid` (auth_token)
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/atrea_control/duplex/login.rb', line 29 def call @sid = sid if @sid == "0" re_login = RestClient.post "#{AtreaControl::Duplex::CONTROL_URI}/apps/rd5Control/handle.php?action=unitLogin&user=#{user_id}&unit=#{unit_id}&table=userUnits&idPwd=#{unit[:iid]}&#{SecureRandom.hex(2)}&_ts=#{SecureRandom.hex(4)}", { comm: "config/login.cgi?magic=" }, headers time = Nokogiri::XML(re_login.body).at_xpath("//sended")["time"].to_i logger.debug "Login in #{time} seconds..." time.times do @sid = sid break if @sid != "0" sleep 1 end raise AtreaControl::Error, "Login failed" if @sid == "0" logger.debug "Login complete !" else logger.debug "Login is not necessary ! SID: #{@sid}" end { user_id:, unit_id:, sid: @sid } end |