Class: CASClient::LoginResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/casclient/responses.rb

Overview

Represents a response from the CAS server to a login request (i.e. after submitting a username/password).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_response = nil, options = {}) ⇒ LoginResponse

Returns a new instance of LoginResponse.



175
176
177
# File 'lib/casclient/responses.rb', line 175

def initialize(http_response = nil, options={})
  parse_http_response(http_response) if http_response
end

Instance Attribute Details

#failure_messageObject (readonly)

Returns the value of attribute failure_message.



173
174
175
# File 'lib/casclient/responses.rb', line 173

def failure_message
  @failure_message
end

#service_redirect_urlObject (readonly)

Returns the value of attribute service_redirect_url.



172
173
174
# File 'lib/casclient/responses.rb', line 172

def service_redirect_url
  @service_redirect_url
end

#tgtObject (readonly)

Returns the value of attribute tgt.



172
173
174
# File 'lib/casclient/responses.rb', line 172

def tgt
  @tgt
end

#ticketObject (readonly)

Returns the value of attribute ticket.



172
173
174
# File 'lib/casclient/responses.rb', line 172

def ticket
  @ticket
end

Instance Method Details

#is_failure?Boolean

Returns:

  • (Boolean)


213
214
215
# File 'lib/casclient/responses.rb', line 213

def is_failure?
  @failure == true
end

#is_success?Boolean

Returns:

  • (Boolean)


209
210
211
# File 'lib/casclient/responses.rb', line 209

def is_success?
  !@failure && !ticket.blank?
end

#parse_http_response(http_response) ⇒ Object



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/casclient/responses.rb', line 179

def parse_http_response(http_response)
  header = http_response.to_hash

  # FIXME: this regexp might be incorrect...
  if header['set-cookie'] && 
    header['set-cookie'].first && 
    header['set-cookie'].first =~ /tgt=([^&]+);/
    @tgt = $~[1]
  end

  location = header['location'].first if header['location'] && header['location'].first
  if location =~ /ticket=([^&]+)/
    @ticket = $~[1]
  end

  if not ((http_response.kind_of?(Net::HTTPSuccess) || http_response.kind_of?(Net::HTTPFound)) && @ticket.present?)
    @failure = true
    # Try to extract the error message -- this only works with RubyCAS-Server.
    # For other servers we just return the entire response body (i.e. the whole error page).
    body = http_response.body
    if body =~ /<div class="messagebox mistake">(.*?)<\/div>/m
      @failure_message = $~[1].strip
    else
      @failure_message = body
    end
  end

  @service_redirect_url = location
end