ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilCmiXapiAbstractRequest Class Reference
+ Inheritance diagram for ilCmiXapiAbstractRequest:
+ Collaboration diagram for ilCmiXapiAbstractRequest:

Public Member Functions

 __construct (string $basicAuth)
 ilCmiXapiAbstractRequest constructor. More...
 

Static Public Member Functions

static checkResponse ($response, &$body, $allowedStatus=[200, 204])
 
static buildQuery (array $params, $encoding=PHP_QUERY_RFC3986)
 

Static Public Attributes

static $plugin = false
 

Protected Member Functions

 sendRequest ($url)
 

Private Attributes

 $basicAuth
 

Detailed Description

Definition at line 15 of file class.ilCmiXapiAbstractRequest.php.

Constructor & Destructor Documentation

◆ __construct()

ilCmiXapiAbstractRequest::__construct ( string  $basicAuth)

ilCmiXapiAbstractRequest constructor.

Parameters
string$basicAuth

Definition at line 31 of file class.ilCmiXapiAbstractRequest.php.

32 {
33 $this->basicAuth = $basicAuth;
34 }

References $basicAuth.

Member Function Documentation

◆ buildQuery()

static ilCmiXapiAbstractRequest::buildQuery ( array  $params,
  $encoding = PHP_QUERY_RFC3986 
)
static

Definition at line 96 of file class.ilCmiXapiAbstractRequest.php.

97 {
98 if (!$params) {
99 return '';
100 }
101
102 if ($encoding === false) {
103 $encoder = function ($str) {
104 return $str;
105 };
106 } elseif ($encoding === PHP_QUERY_RFC3986) {
107 $encoder = 'rawurlencode';
108 } elseif ($encoding === PHP_QUERY_RFC1738) {
109 $encoder = 'urlencode';
110 } else {
111 throw new \InvalidArgumentException('Invalid type');
112 }
113
114 $qs = '';
115 foreach ($params as $k => $v) {
116 $k = $encoder($k);
117 if (!is_array($v)) {
118 $qs .= $k;
119 if ($v !== null) {
120 $qs .= '=' . $encoder($v);
121 }
122 $qs .= '&';
123 } else {
124 foreach ($v as $vv) {
125 $qs .= $k;
126 if ($vv !== null) {
127 $qs .= '=' . $encoder($vv);
128 }
129 $qs .= '&';
130 }
131 }
132 }
133 return $qs ? (string) substr($qs, 0, -1) : '';
134 }

Referenced by ilCmiXapiLaunchGUI\CMI5preLaunch(), and ilXapiStatementEvaluation\sendSatisfiedStatement().

+ Here is the caller graph for this function:

◆ checkResponse()

static ilCmiXapiAbstractRequest::checkResponse (   $response,
$body,
  $allowedStatus = [200, 204] 
)
static

Definition at line 67 of file class.ilCmiXapiAbstractRequest.php.

68 {
69 if ($response['state'] == 'fulfilled')
70 {
71 $status = $response['value']->getStatusCode();
72 if (in_array($status,$allowedStatus))
73 {
74 $body = $response['value']->getBody();
75 return true;
76 }
77 else
78 {
79 ilObjCmiXapi::log()->error("LRS error: " . $response['value']->getBody());
80 return false;
81 }
82 }
83 else {
84 try
85 {
86 ilObjCmiXapi::log()->error("Connection error: " . $response['reason']->getMessage());
87 }
88 catch(Exception $e)
89 {
90 ilObjCmiXapi::log()->error('error:' . $e->getMessage());
91 }
92 return false;
93 }
94 }
$response

References Vendor\Package\$e, $response, and ilObjCmiXapi\log().

Referenced by ilCmiXapiLaunchGUI\CMI5preLaunch(), ilObjCmiXapi\getLastStatement(), ilCmiXapiStatementsGUI\getVerbs(), sendRequest(), and ilXapiStatementEvaluation\sendSatisfiedStatement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sendRequest()

ilCmiXapiAbstractRequest::sendRequest (   $url)
protected
Parameters
string$url
Returns
string

Definition at line 40 of file class.ilCmiXapiAbstractRequest.php.

41 {
42 $client = new GuzzleHttp\Client();
43 $req_opts = array(
44 GuzzleHttp\RequestOptions::VERIFY => true,
45 GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 10,
46 GuzzleHttp\RequestOptions::HTTP_ERRORS => false
47 );
48 ilObjCmiXapi::log()->debug($url);
49 $request = new GuzzleHttp\Psr7\Request('GET', $url, [
50 'Authorization' => $this->basicAuth,
51 'X-Experience-API-Version' => '1.0.3'
52 ]);
53 try {
54 $body = '';
55 $promises = array();
56 $promises['default'] = $client->sendAsync($request, $req_opts);
57 $responses = GuzzleHttp\Promise\Utils::settle($promises)->wait();
58 self::checkResponse($responses['default'],$body);
59 return $body;
60 }
61 catch(Exception $e) {
62 ilObjCmiXapi::log()->error($e->getMessage());
63 throw new Exception("LRS Connection Problems");
64 }
65 }
static checkResponse($response, &$body, $allowedStatus=[200, 204])
if($_SERVER['argc']< 4) $client
Definition: cron.php:12
$url

References $client, Vendor\Package\$e, $url, checkResponse(), and ilObjCmiXapi\log().

Referenced by ilCmiXapiHighscoreReportRequest\queryReport(), and ilCmiXapiStatementsReportRequest\queryReport().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $basicAuth

ilCmiXapiAbstractRequest::$basicAuth
private

◆ $plugin

ilCmiXapiAbstractRequest::$plugin = false
static

Definition at line 25 of file class.ilCmiXapiAbstractRequest.php.


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