AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace IMSGlobal\LTI\ToolProvider\Service;use IMSGlobal\LTI\ToolProvider;use IMSGlobal\LTI\HTTPMessage;/*** Class to implement a service** @author Stephen P Vickers <svickers@imsglobal.org>* @copyright IMS Global Learning Consortium Inc* @date 2016* @version 3.0.0* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0*/#[\AllowDynamicProperties]class Service{/*** Whether service request should be sent unsigned.** @var boolean $unsigned*/public $unsigned = false;/*** Service endpoint.** @var string $endpoint*/protected $endpoint;/*** Tool Consumer for this service request.** @var ToolConsumer $consumer*/private $consumer;/*** Media type of message body.** @var string $mediaType*/private $mediaType;/*** Class constructor.** @param ToolConsumer $consumer Tool consumer object for this service request* @param string $endpoint Service endpoint* @param string $mediaType Media type of message body*/public function __construct($consumer, $endpoint, $mediaType){$this->consumer = $consumer;$this->endpoint = $endpoint;$this->mediaType = $mediaType;}/*** Send a service request.** @param string $method The action type constant (optional, default is GET)* @param array $parameters Query parameters to add to endpoint (optional, default is none)* @param string $body Body of request (optional, default is null)** @return HTTPMessage HTTP object containing request and response details*/public function send($method, $parameters = array(), $body = null){$url = $this->endpoint;if (!empty($parameters)) {if (strpos($url, '?') === false) {$sep = '?';} else {$sep = '&';}foreach ($parameters as $name => $value) {$url .= $sep . urlencode($name) . '=' . urlencode($value);$sep = '&';}}if (!$this->unsigned) {$header = ToolProvider\ToolConsumer::addSignature($url, $this->consumer->getKey(), $this->consumer->secret, $body, $method, $this->mediaType);} else {$header = null;}// Connect to tool consumer$http = new HTTPMessage($url, $method, $body, $header);// Parse JSON responseif ($http->send() && !empty($http->response)) {$http->responseJson = json_decode($http->response);$http->ok = !is_null($http->responseJson);}return $http;}}