ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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 (array $response, &$body, array $allowedStatus=[200, 204])
 
static buildQuery (array $params, $encoding=PHP_QUERY_RFC3986)
 

Static Public Attributes

static bool $plugin = false
 

Protected Member Functions

 sendRequest (string $url)
 

Private Attributes

string $basicAuth
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilCmiXapiAbstractRequest::__construct ( string  $basicAuth)

ilCmiXapiAbstractRequest constructor.

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

39 {
40 $this->basicAuth = $basicAuth;
41 }

References $basicAuth.

Member Function Documentation

◆ buildQuery()

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

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

92 : string
93 {
94 if ($params === []) {
95 return '';
96 }
97
98 if ($encoding === false) {
99 $encoder = fn($str) => $str;
100 } elseif ($encoding === PHP_QUERY_RFC3986) {
101 $encoder = 'rawurlencode';
102 } elseif ($encoding === PHP_QUERY_RFC1738) {
103 $encoder = 'urlencode';
104 } else {
105 throw new \InvalidArgumentException('Invalid type');
106 }
107
108 $qs = '';
109 foreach ($params as $k => $v) {
110 $k = $encoder($k);
111 if (!is_array($v)) {
112 $qs .= $k;
113 if ($v !== null) {
114 $qs .= '=' . $encoder($v);
115 }
116 $qs .= '&';
117 } else {
118 foreach ($v as $vv) {
119 $qs .= $k;
120 if ($vv !== null) {
121 $qs .= '=' . $encoder($vv);
122 }
123 $qs .= '&';
124 }
125 }
126 }
127 return $qs ? (string) substr($qs, 0, -1) : '';
128 }
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31

References $params.

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

+ Here is the caller graph for this function:

◆ checkResponse()

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

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

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

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 ( string  $url)
protected

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

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

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

string ilCmiXapiAbstractRequest::$basicAuth
private

◆ $plugin

bool ilCmiXapiAbstractRequest::$plugin = false
static

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


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