in classes/api/base.php [193:247]
public function process_apicall_response($response, array $expectedstructure = array()) {
$backtrace = debug_backtrace(0);
$callingclass = (isset($backtrace[1]['class'])) ? $backtrace[1]['class'] : '?';
$callingfunc = (isset($backtrace[1]['function'])) ? $backtrace[1]['function'] : '?';
$callingline = (isset($backtrace[0]['line'])) ? $backtrace[0]['line'] : '?';
$caller = $callingclass.'::'.$callingfunc.':'.$callingline;
$result = @json_decode($response, true);
if (empty($result) || !is_array($result)) {
\local_onenote\utils::debug('Bad response received', $caller, $response);
throw new \moodle_exception('erroronenoteapibadcall', 'local_onenote');
}
if (isset($result['odata.error'])) {
$errmsg = 'Error response received.';
\local_onenote\utils::debug($errmsg, $caller, $result['odata.error']);
if (isset($result['odata.error']['message']) && isset($result['odata.error']['message']['value'])) {
$apierrormessage = $result['odata.error']['message']['value'];
throw new \moodle_exception('erroronenoteapibadcall_message', 'local_onenote', '', htmlentities($apierrormessage));
} else {
throw new \moodle_exception('erroronenoteapibadcall', 'local_onenote');
}
}
if (isset($result['error'])) {
$errmsg = 'Error response received.';
\local_onenote\utils::debug($errmsg, $caller, $result['error']);
if (isset($result['error']['message'])) {
$apierrormessage = 'Unknown error, check logs for more information.';
if (is_string($result['error']['message'])) {
$apierrormessage = $result['error']['message'];
} else if (is_array($result['error']['message']) && isset($result['error']['message']['value'])) {
$apierrormessage = $result['error']['message']['value'];
}
throw new \moodle_exception('erroronenoteapibadcall_message', 'local_onenote', '', htmlentities($apierrormessage));
} else {
throw new \moodle_exception('erroronenoteapibadcall', 'local_onenote');
}
}
foreach ($expectedstructure as $key => $val) {
if (!isset($result[$key])) {
$errmsg = 'Invalid structure received. No "'.$key.'"';
\local_onenote\utils::debug($errmsg, $caller, $result);
throw new \moodle_exception('erroronenoteapibadcall_message', 'local_onenote', '', $errmsg);
}
if ($val !== null && $result[$key] !== $val) {
$strreceivedval = \local_onenote\utils::tostring($result[$key]);
$strval = \local_onenote\utils::tostring($val);
$errmsg = 'Invalid structure received. Invalid "'.$key.'". Received "'.$strreceivedval.'", expected "'.$strval.'"';
\local_onenote\utils::debug($errmsg, $caller, $result);
throw new \moodle_exception('erroronenoteapibadcall_message', 'local_onenote', '', $errmsg);
}
}
return $result;
}