Class: CASClient::RestClient

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

Instance Attribute Summary collapse

Attributes inherited from Client

#cas_base_url, #extra_attributes_session_key, #log, #login_url, #logout_url, #proxy_callback_url, #proxy_retrieval_url, #proxy_url, #service_url, #username_session_key, #validate_url

Instance Method Summary collapse

Methods inherited from Client

#add_service_to_login_url, #http_connection, #initialize, #load_ticket_url, #login_to_service, #request_login_ticket, #request_proxy_ticket, #retrieve_proxy_granting_ticket, #validate_service_ticket

Constructor Details

This class inherits a constructor from CASClient::Client

Instance Attribute Details

#restful_urlObject



10
11
12
# File 'lib/casclient/rest_client.rb', line 10

def restful_url
  @restful_url || (cas_base_url + "/v1/tickets")
end

Instance Method Details

#configure(conf) ⇒ Object



5
6
7
8
# File 'lib/casclient/rest_client.rb', line 5

def configure(conf)
  @restful_url = conf[:restful_url]
  super
end

#get_service_ticket(credentials, service_url) ⇒ Object



41
42
43
44
45
# File 'lib/casclient/rest_client.rb', line 41

def get_service_ticket(credentials, service_url)  
  tgt_resource = get_ticket_granting_ticket_resource(credentials)
  data = credentials.merge(:service => CGI.escape(service_url)).stringify_keys
  resp = submit_data_to_cas(restful_url, data, '&')      
end

#get_ticket_granting_ticket_resource(credentials) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/casclient/rest_client.rb', line 14

def get_ticket_granting_ticket_resource(credentials)
  resp = submit_data_to_cas(restful_url, credentials.stringify_keys, '&')
  puts  "resp: #{resp.inspect}"
  case resp
  when Net::HTTPCreated then
    log.debug("successfully created a TGT")
    header = resp.to_hash
    return header['location']
  when Net::HTTPForbidden then
    log.warn("RestClient.get_ticket_granting_ticket_resource: credentials were incorrect")
    return nil
  when Net::HTTPBadRequest then
    log.error("RestClient.get_ticket_granting_ticket_resource: CAS server returned BadRequest")
    raise BadRequestException, res.body
  else
    log.warn "RestClient.get_ticket_granting_ticket_resource: an unexpected error occurred #{resp}"
    raise CASException, res.inspect
  end      
end

#ticket_id_from_resource_url(*ticket_resource) ⇒ Object

Raises:

  • (Exception)


34
35
36
37
38
39
# File 'lib/casclient/rest_client.rb', line 34

def ticket_id_from_resource_url(*ticket_resource)
  ticket_resource = ticket_resource.flatten.to_s
  match = ticket_resource.match(/(TGT[^\/]+cas)/)
  raise Exception, "could not extract ticket id from #{ticket_resource}" unless match
  return match[1]
end