ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
CAS_ProxiedService_Http_Post Class Reference

This class is used to make proxied service requests via the HTTP POST method. More...

+ Inheritance diagram for CAS_ProxiedService_Http_Post:
+ Collaboration diagram for CAS_ProxiedService_Http_Post:

Public Member Functions

 setContentType ($contentType)
 Set the content type of this POST request. More...
 
 setBody ($body)
 Set the body of this POST request. More...
 
- Public Member Functions inherited from CAS_ProxiedService_Http_Abstract
 __construct (CAS_Request_RequestInterface $requestHandler, CAS_CookieJar $cookieJar)
 Constructor. More...
 
 getServiceUrl ()
 Answer a service identifier (URL) for whom we should fetch a proxy ticket. More...
 
 setUrl ($url)
 Set the URL of the Request. More...
 
 send ()
 Perform the request. More...
 
 getResponseHeaders ()
 Answer the headers of the response. More...
 
 getResponseStatusCode ()
 Answer HTTP status code of the response. More...
 
 getResponseBody ()
 Answer the body of response. More...
 
 getCookies ()
 Answer the cookies from the response. More...
 
- Public Member Functions inherited from CAS_ProxiedService_Abstract
 setProxyTicket ($proxyTicket)
 Register a proxy ticket with the Proxy that it can use when making requests. More...
 
 setCasClient (CAS_Client $casClient)
 Use a particular CAS_Client->initializeProxiedService() rather than the static phpCAS::initializeProxiedService(). More...
 
- Public Member Functions inherited from CAS_ProxiedService
 getServiceUrl ()
 Answer a service identifier (URL) for whom we should fetch a proxy ticket. More...
 
 setProxyTicket ($proxyTicket)
 Register a proxy ticket with the ProxiedService that it can use when making requests. More...
 
- Public Member Functions inherited from CAS_ProxiedService_Http
 setUrl ($url)
 Set the URL of the Request. More...
 
 send ()
 Perform the request. More...
 
 getResponseHeaders ()
 Answer the headers of the response. More...
 
 getResponseBody ()
 Answer the body of response. More...
 

Protected Member Functions

 populateRequest (CAS_Request_RequestInterface $request)
 Add any other parts of the request needed by concrete classes. More...
 
- Protected Member Functions inherited from CAS_ProxiedService_Http_Abstract
 makeRequest ($url)
 Build and perform a request, following redirects. More...
 
 populateRequest (CAS_Request_RequestInterface $request)
 Add any other parts of the request needed by concrete classes. More...
 
 getRedirectUrl (array $responseHeaders)
 Answer a redirect URL if a redirect header is found, otherwise null. More...
 
 hasBeenSent ()
 Answer true if our request has been sent yet. More...
 
- Protected Member Functions inherited from CAS_ProxiedService_Abstract
 getProxyTicket ()
 Answer the proxy ticket to be used when making requests. More...
 
 initializeProxyTicket ()
 Fetch our proxy ticket. More...
 

Private Attributes

 $_contentType
 The content-type of this request. More...
 
 $_body
 The body of the this request. More...
 

Additional Inherited Members

- Protected Attributes inherited from CAS_ProxiedService_Http_Abstract
 $requestHandler
 The HTTP request mechanism talking to the target service. More...
 

Detailed Description

This class is used to make proxied service requests via the HTTP POST method.

Usage Example:

 try {
            $service = phpCAS::getProxiedService(PHPCAS_PROXIED_SERVICE_HTTP_POST);
            $service->setUrl('http://www.example.com/path/');
    $service->setContentType('text/xml');
    $service->setBody('<?xml version="1.0"?'.'><methodCall><methodName>example.search</methodName></methodCall>');
            $service->send();
    if ($service->getResponseStatusCode() == 200)
            return $service->getResponseBody();
    else
            // The service responded with an error code 404, 500, etc.
            throw new Exception('The service responded with an error.');

 } catch (CAS_ProxyTicketException $e) {
    if ($e->getCode() == PHPCAS_SERVICE_PT_FAILURE)
            return "Your login has timed out. You need to log in again.";
    else
            // Other proxy ticket errors are from bad request format
     // (shouldn't happen) or CAS server failure (unlikely) so lets just
     // stop if we hit those.
            throw $e;
 } catch (CAS_ProxiedService_Exception $e) {
    // Something prevented the service request from being sent or received.
    // We didn't even get a valid error response (404, 500, etc), so this
    // might be caused by a network error or a DNS resolution failure.
    // We could handle it in some way, but for now we will just stop.
    throw $e;
 }

Definition at line 70 of file Post.php.

Member Function Documentation

◆ populateRequest()

CAS_ProxiedService_Http_Post::populateRequest ( CAS_Request_RequestInterface  $request)
protected

Add any other parts of the request needed by concrete classes.

Parameters
CAS_Request_RequestInterface$requestrequest interface class
Returns
void

Definition at line 133 of file Post.php.

References CAS_Request_RequestInterface\addHeader(), CAS_Request_RequestInterface\makePost(), and CAS_Request_RequestInterface\setPostBody().

134  {
135  if (empty($this->_contentType) && !empty($this->_body)) {
137  "If you pass a POST body, you must specify a content type via "
138  .get_class($this).'->setContentType($contentType).'
139  );
140  }
141 
142  $request->makePost();
143  if (!empty($this->_body)) {
144  $request->addHeader('Content-Type: '.$this->_contentType);
145  $request->addHeader('Content-Length: '.strlen($this->_body));
146  $request->setPostBody($this->_body);
147  }
148  }
An Exception for problems communicating with a proxied service.
Definition: Exception.php:40
setPostBody($body)
Add a POST body to the request.
makePost()
Make the request a POST request rather than the default GET request.
addHeader($header)
Add a header string to the request.
+ Here is the call graph for this function:

◆ setBody()

CAS_ProxiedService_Http_Post::setBody (   $body)

Set the body of this POST request.

Parameters
string$bodybody to set
Returns
void
Exceptions
CAS_OutOfSequenceExceptionIf called after the Request has been sent.

Definition at line 115 of file Post.php.

References CAS_ProxiedService_Http_Abstract\hasBeenSent().

116  {
117  if ($this->hasBeenSent()) {
118  throw new CAS_OutOfSequenceException(
119  'Cannot set the body, request already sent.'
120  );
121  }
122 
123  $this->_body = $body;
124  }
This class defines Exceptions that should be thrown when the sequence of operations is invalid...
hasBeenSent()
Answer true if our request has been sent yet.
Definition: Abstract.php:292
+ Here is the call graph for this function:

◆ setContentType()

CAS_ProxiedService_Http_Post::setContentType (   $contentType)

Set the content type of this POST request.

Parameters
string$contentTypecontent type
Returns
void
Exceptions
CAS_OutOfSequenceExceptionIf called after the Request has been sent.

Definition at line 96 of file Post.php.

References $contentType, and CAS_ProxiedService_Http_Abstract\hasBeenSent().

97  {
98  if ($this->hasBeenSent()) {
100  'Cannot set the content type, request already sent.'
101  );
102  }
103 
104  $this->_contentType = $contentType;
105  }
This class defines Exceptions that should be thrown when the sequence of operations is invalid...
hasBeenSent()
Answer true if our request has been sent yet.
Definition: Abstract.php:292
if($path[strlen($path) - 1]==='/') if(is_dir($path)) if(!file_exists($path)) if(preg_match('#\.php$#D', $path)) $contentType
Definition: module.php:142
+ Here is the call graph for this function:

Field Documentation

◆ $_body

string CAS_ProxiedService_Http_Post::$_body
private

The body of the this request.

Definition at line 86 of file Post.php.

◆ $_contentType

string CAS_ProxiedService_Http_Post::$_contentType
private

The content-type of this request.

Definition at line 79 of file Post.php.


The documentation for this class was generated from the following file: