Class: MESD
- Inherits:
-
Object
- Object
- MESD
- Defined in:
- lib/me_sd.rb
Direct Known Subclasses
Constant Summary collapse
- EXCEPTIONS =
[Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::EHOSTUNREACH, Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError]
Instance Attribute Summary collapse
-
#curobj ⇒ Object
Returns the value of attribute curobj.
-
#current_body ⇒ Object
Returns the value of attribute current_body.
-
#last_error ⇒ Object
Returns the value of attribute last_error.
-
#session ⇒ Object
Returns the value of attribute session.
Instance Method Summary collapse
- #get_all_requests ⇒ Object
- #get_last_requests(number) ⇒ Object
-
#initialize(args) ⇒ MESD
constructor
A new instance of MESD.
-
#session_healthy?(session) ⇒ Boolean
logs in and tries to find out is session healthy criteria: logout button is present.
Constructor Details
#initialize(args) ⇒ MESD
Returns a new instance of MESD.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/me_sd.rb', line 8 def initialize(args) host = args[:host] port = args[:port] || "80" username = args[:username] password = args[:password] uri = URI("http://#{host}:#{port}") begin Net::HTTP.start(uri.host, uri.port) do |http| request = http.get(uri) = request.response["set-cookie"] uri = "#{uri}/j_security_check" auth_data = ""\ "j_username=#{username}&"\ "j_password=#{password}&"\ "AdEnable=false&"\ "DomainCount=0&"\ "LDAPEnable=false&"\ "LocalAuth=No&"\ "LocalAuthWithDomain=No&"\ "dynamicUserAddition_status=true&"\ "hidden=Select+a+Domain&"\ "hidden=For+Domain&"\ "localAuthEnable=true&"\ "loginButton=Login&"\ "logonDomainName=-1&"\ "" auth_headers = { "Referer" => "http://#{host}:#{port}", "Host" => "#{host}:#{port}", "Cookie" => "#{cookie};", } request = http.post(uri, auth_data, auth_headers) @session = { host: host, port: port, cookie: , } @last_error = "wrong credentials" unless self.session_healthy?(self.session) end rescue *EXCEPTIONS => @last_error end end |
Instance Attribute Details
#curobj ⇒ Object
Returns the value of attribute curobj.
2 3 4 |
# File 'lib/me_sd.rb', line 2 def curobj @curobj end |
#current_body ⇒ Object
Returns the value of attribute current_body.
2 3 4 |
# File 'lib/me_sd.rb', line 2 def current_body @current_body end |
#last_error ⇒ Object
Returns the value of attribute last_error.
2 3 4 |
# File 'lib/me_sd.rb', line 2 def last_error @last_error end |
#session ⇒ Object
Returns the value of attribute session.
2 3 4 |
# File 'lib/me_sd.rb', line 2 def session @session end |
Instance Method Details
#get_all_requests ⇒ Object
72 73 74 |
# File 'lib/me_sd.rb', line 72 def get_all_requests get_last_requests(0) end |
#get_last_requests(number) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/me_sd.rb', line 76 def get_last_requests(number) if number < 0 @last_error = "wrong requests number" return false end select_all_requests if number == 0 puts "Getting total #{@curobj['_TL']} requests:" else puts "Getting last #{number} of maximum #{@curobj['_TL']} requests:" end requests = Array.new get_requests_urls(@current_body).each { |url| requests.push(Request.new({ session: @session, url: url })) } begin there_are_more_pages = next_page get_requests_urls(@current_body).each { |url| requests.push(Request.new({ session: @session, url: url })) } break unless requests.size < number if number != 0 break unless there_are_more_pages end while true requests[0..number-1] end |
#session_healthy?(session) ⇒ Boolean
logs in and tries to find out is session healthy criteria: logout button is present
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/me_sd.rb', line 53 def session_healthy?(session) return false unless session session_healthy = false uri = URI("http://#{session[:host]}:#{session[:port]}/MySchedule.do") begin Net::HTTP.start(uri.host, uri.port) do |http| request = Net::HTTP::Get.new(uri) request.add_field("Cookie", "#{session[:cookie]}") request = http.request(request) # ... # <a style="display:inline" href="\"javascript:" prelogout('null')\"="">Log out</a> # ... session_healthy = true if /preLogout/.match(request.body) end rescue *EXCEPTIONS => @last_error end session_healthy end |