ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
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.

References $basicAuth.

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

Member Function Documentation

◆ buildQuery()

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

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

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

88  {
89  if (!$params) {
90  return '';
91  }
92 
93  if ($encoding === false) {
94  $encoder = function ($str) {
95  return $str;
96  };
97  } elseif ($encoding === PHP_QUERY_RFC3986) {
98  $encoder = 'rawurlencode';
99  } elseif ($encoding === PHP_QUERY_RFC1738) {
100  $encoder = 'urlencode';
101  } else {
102  throw new \InvalidArgumentException('Invalid type');
103  }
104 
105  $qs = '';
106  foreach ($params as $k => $v) {
107  $k = $encoder($k);
108  if (!is_array($v)) {
109  $qs .= $k;
110  if ($v !== null) {
111  $qs .= '=' . $encoder($v);
112  }
113  $qs .= '&';
114  } else {
115  foreach ($v as $vv) {
116  $qs .= $k;
117  if ($vv !== null) {
118  $qs .= '=' . $encoder($vv);
119  }
120  $qs .= '&';
121  }
122  }
123  }
124  return $qs ? (string) substr($qs, 0, -1) : '';
125  }
+ Here is the caller graph for this function:

◆ checkResponse()

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

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

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

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

67  {
68  if ($response['state'] == 'fulfilled') {
69  $status = $response['value']->getStatusCode();
70  if (in_array($status, $allowedStatus)) {
71  $body = $response['value']->getBody();
72  return true;
73  } else {
74  ilObjCmiXapi::log()->error("LRS error: " . $response['value']->getBody());
75  return false;
76  }
77  } else {
78  try {
79  ilObjCmiXapi::log()->error("Connection error: " . $response['reason']->getMessage());
80  } catch (Exception $e) {
81  ilObjCmiXapi::log()->error('error:' . $e->getMessage());
82  }
83  return false;
84  }
85  }
$response
+ 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.

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

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

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  } catch (Exception $e) {
61  ilObjCmiXapi::log()->error($e->getMessage());
62  throw new Exception("LRS Connection Problems");
63  }
64  }
if($_SERVER['argc']< 4) $client
Definition: cron.php:12
$url
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $basicAuth

ilCmiXapiAbstractRequest::$basicAuth
private

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

Referenced by __construct().

◆ $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: