get('ill_add_url')); $relais_arr = upei_roblib_ill_build_relais_arr($form_state); $relais_json = json_encode($relais_arr); $options = [ 'body' => $relais_json, 'timeout' => 15, 'headers' => ['Content-Type' => 'application/json'], ]; if (!isset($aid) || is_array($aid)) { upei_roblib_ill_log_request($relais_arr, $aid); \Drupal::messenger()->addMessage(t('Error retrieving authentication token, @message', ['@message' => $aid['Problem']['Message']]), 'error'); return ['ConfirmMessage' => t('There was an error processing your request, @msg', ['@msg' => $aid['Problem']['Message']])]; } //$result = drupal_http_request($url . '?aid=' . $aid, $options); try { $response = \Drupal::httpClient()->post($url . '?aid=' . $aid, $options); //$response_data = (string) $response->getBody(); } catch (Exception $e) { return ['ConfirmMessage' => 'Error Communicating with Relais, ' . $e->getMessage()]; } $response_arr = json_decode($response->getBody(),TRUE); if (!isset($response_arr)) { return ['ConfirmMessage' => 'Error Communicating with Relais, no data returned.']; } $response_arr['ConfirmMessage'] = isset($response_arr['Problem']['ErrorMessage']) ? $response_arr['Problem']['ErrorMessage'] : $response_arr['ConfirmMessage']; upei_roblib_ill_log_request($relais_arr, $response_arr); return $response_arr; } /** * @param $form_state * * @return array */ function upei_roblib_ill_build_relais_arr($form_state) { module_load_include('inc', 'upei_roblib_ill', 'includes/utilities'); $storage = $form_state->getStorage(); $ill_request = $storage['request']; $values = $form_state->getValues(); $config = \Drupal::config('upei_roblib_ill.settings'); $relais_arr = [ "SupplyingLibrarySymbol" => $config->get('ill_library_symbol'), ]; $pub_type = upei_roblib_ill_get_pub_type($ill_request['Genre']); $relais_arr['BibliographicInfo'] = upei_roblib_ill_clean_array($ill_request); $relais_arr['DeliveryAddress'] = upei_roblib_ill_clean_array($values); if ($pub_type != 'B') { // this is not a book but is a journal or chapter we will send electronically and as copy $relais_arr['ElectronicDelivery']['DeliveryAddress'] = $relais_arr['ElectronicDelivery']['MessagingAddress'] = $relais_arr['DeliveryAddress']['DeliveryAddress']; } $request_info = upei_roblib_ill_request_info_array($relais_arr['BibliographicInfo'], $values['notes']); $relais_arr['RequestInfo'] = $request_info; $relais_arr['PublisherInfo']['PublicationDate'] = isset($ill_request['Date']) ? $ill_request['Date'] : ''; $relais_arr['PublisherInfo']['PublicationType'] = $pub_type; return $relais_arr; } /** * Request an aid from Relais. * * @param string $barcode * A patron_id, campus_id or barcode to identify a user * * @return string/array * Returns a Relais authentication id (token) or an array containing the * Relais response error which should include the error message if * authentication fails */ function upei_roblib_ill_authenticate($barcode, $surname) { //$url = variable_get('upei_roblib_ill_auth_url', 'https://caul-cbua.relais-host.com/portal-service/user/authentication'); $config = \Drupal::config('upei_roblib_ill.settings'); $url = $config->get('ill_auth_url'); $json_arr = []; $json_arr['ApiKey'] = $config->get('ill_relais_key'); $json_arr['UserGroup'] = 'patron'; $json_arr['LibrarySymbol'] = $config->get('ill_library_symbol'); $json_arr['PatronId'] = $barcode; $request_json = json_encode($json_arr); $options = [ 'body' => $request_json, 'timeout' => 15, 'headers' => ['Content-Type' => 'application/json'], ]; try { $response = \Drupal::httpClient()->post($url, $options); } catch (Exception $e) { $human_readable = ''; if($e->getCode() == '401') { $human_readable = t('There may have been an issue with your Campus ID, ' . 'Please verify it is correct. '); } $response_data['Problem']['Message'] = $e->getMessage(); $response_data['Problem']['HR_Message'] = upei_roblib_ill_build_err_msg($human_readable); return $response_data; } $response_data = json_decode($response->getBody(),TRUE); $status_code = $response->getStatusCode(); if ($status_code == '200') { if (isset($response_data['Problem']) || strtolower($response_data['LastName']) !== strtolower($surname)) { $err_message = isset($response_data['Problem']['Message']) ? $response_data['Problem']['Message'] : ''; $response_data['Problem']['Message'] = upei_roblib_ill_build_err_msg($err_message); return $response_data; } $aid = $response_data['AuthorizationId']; } return isset($aid) ? $aid : $response_data; } function upei_roblib_ill_build_err_msg($msg_from_server) { $campus_id = Link::fromTextAndUrl(t('Campus ID'), Url::fromUri('http://www.upei.ca/vpaf/campuscard')); //$campus_id = l(t('Campus ID'), 'http://www.upei.ca/vpaf/campuscard'); $ill_email = Link::fromTextAndUrl('ill@upei.ca', Url::fromUri('mailto:ill@upei.ca')); //$ill_email = l(t('ill@upei.ca'), 'mailto:ill@upei.ca'); $phone = Link::fromTextAndUrl('902-566-0583', Url::fromUri('tel:902-566-0353')); //$phone = l(t('902-566-0583'), 'tel:902-566-0353'); $server_response = !empty($msg_from_server) ? 'Server Response: ' . $msg_from_server : ''; return t('Oops. Something went wrong.
Check the "Your Last Name" and "Your Campus ID" fields - those two need to match what is on file . (Your @campus_id appears as the NUMBER near the middle of your campus card). If you do not have a @campus_id, please contact the Robertson Library Service Desk, or, call @phone. Note: if you are a student taking online courses only, please email @ill_email.
@msg_from_server', [ '@campus_id' => $campus_id->toString(), '@ill_email' => $ill_email->toString(), '@phone' => $phone->toString(), '@msg_from_server' => $server_response, ]); }