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.



158
159
160
# File 'lib/casclient/responses.rb', line 158

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.



156
157
158
# File 'lib/casclient/responses.rb', line 156

def failure_message
  @failure_message
end

#service_redirect_urlObject (readonly)

Returns the value of attribute service_redirect_url.



155
156
157
# File 'lib/casclient/responses.rb', line 155

def service_redirect_url
  @service_redirect_url
end

#tgtObject (readonly)

Returns the value of attribute tgt.



155
156
157
# File 'lib/casclient/responses.rb', line 155

def tgt
  @tgt
end

#ticketObject (readonly)

Returns the value of attribute ticket.



155
156
157
# File 'lib/casclient/responses.rb', line 155

def ticket
  @ticket
end

Instance Method Details

#is_failure?Boolean

Returns:

  • (Boolean)


196
197
198
# File 'lib/casclient/responses.rb', line 196

def is_failure?
  @failure == true
end

#is_success?Boolean

Returns:

  • (Boolean)


192
193
194
# File 'lib/casclient/responses.rb', line 192

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

#parse_http_response(http_response) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/casclient/responses.rb', line 162

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