Class: Qa::LinkedDataTermsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- Qa::LinkedDataTermsController
- Defined in:
- app/controllers/qa/linked_data_terms_controller.rb
Overview
This controller is used for all requests to linked data authorities. It will verify params and figure out which linked data authority to query based on the ‘vocab’ param.
Instance Attribute Summary collapse
-
#request_header_service ⇒ Object
readonly
Returns the value of attribute request_header_service.
Instance Method Summary collapse
-
#fetch ⇒ Object
Return all the information for a given term given a URI get “/fetch/linked_data/:vocab”.
-
#index ⇒ Object
Provide a warning if there is a request for all terms.
-
#list ⇒ Object
Return a list of supported authority names optionally with details about the authority get “/list/linked_data/authorities?details=true|false” (default details=false).
-
#reload ⇒ Object
Reload authority configurations get “/reload/linked_data/authorities?auth_token=YOUR_AUTH_TOKEN_DEFINED_HERE”.
-
#search ⇒ Object
Return a list of terms based on a query get “/search/linked_data/:vocab(/:subauthority)”.
-
#show ⇒ Object
Return all the information for a given term given an id or URI get “/show/linked_data/:vocab/:id” get “/show/linked_data/:vocab/:subauthority/:id.
Instance Attribute Details
#request_header_service ⇒ Object (readonly)
Returns the value of attribute request_header_service.
17 18 19 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 17 def request_header_service @request_header_service end |
Instance Method Details
#fetch ⇒ Object
Return all the information for a given term given a URI get “/fetch/linked_data/:vocab”
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 97 def fetch # rubocop:disable Metrics/MethodLength, Metrics/AbcSize term = @authority.find(uri, request_header: request_header_service.fetch_header) cors_allow_origin_header(response) render json: term, content_type: request_header_service.content_type_for_format rescue Qa::TermNotFound msg = "Term Not Found - Fetch term #{uri} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :not_found rescue Qa::ServiceUnavailable msg = "Service Unavailable - Fetch term #{uri} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :service_unavailable rescue Qa::ServiceError msg = "Internal Server Error - Fetch term #{uri} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :internal_server_error rescue RDF::FormatError msg = "RDF Format Error - Results from fetch term #{uri} for#{subauth_warn_msg} authority #{vocab_param} " \ "was not identified as a valid RDF format. You may need to include the linkeddata gem." logger.warn msg render json: { errors: msg }, status: :internal_server_error end |
#index ⇒ Object
Provide a warning if there is a request for all terms.
20 21 22 23 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 20 def index logger.warn 'Linked data authorities do not support retrieving all terms.' head :not_found end |
#list ⇒ Object
Return a list of supported authority names optionally with details about the authority get “/list/linked_data/authorities?details=true|false” (default details=false)
29 30 31 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 29 def list details? ? render_detail_list : render_simple_list end |
#reload ⇒ Object
Reload authority configurations get “/reload/linked_data/authorities?auth_token=YOUR_AUTH_TOKEN_DEFINED_HERE”
36 37 38 39 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 36 def reload Qa::LinkedData::AuthorityService. list end |
#search ⇒ Object
Return a list of terms based on a query get “/search/linked_data/:vocab(/:subauthority)”
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 44 def search # rubocop:disable Metrics/MethodLength terms = @authority.search(query, request_header: request_header_service.search_header) cors_allow_origin_header(response) render json: terms rescue Qa::ServiceUnavailable msg = "Service Unavailable - Search query #{query} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :service_unavailable rescue Qa::ServiceError msg = "Internal Server Error - Search query #{query} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :internal_server_error rescue RDF::FormatError msg = "RDF Format Error - Results from search query #{query} for#{subauth_warn_msg} authority #{vocab_param} " \ "was not identified as a valid RDF format. You may need to include the linkeddata gem." logger.warn msg render json: { errors: msg }, status: :internal_server_error end |
#show ⇒ Object
Return all the information for a given term given an id or URI get “/show/linked_data/:vocab/:id” get “/show/linked_data/:vocab/:subauthority/:id
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'app/controllers/qa/linked_data_terms_controller.rb', line 67 def show # rubocop:disable Metrics/MethodLength, Metrics/AbcSize term = @authority.find(id, request_header: request_header_service.fetch_header) cors_allow_origin_header(response) render json: term, content_type: request_header_service.content_type_for_format rescue Qa::TermNotFound msg = "Term Not Found - Fetch term #{id} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :not_found rescue Qa::ServiceUnavailable msg = "Service Unavailable - Fetch term #{id} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :service_unavailable rescue Qa::ServiceError msg = "Internal Server Error - Fetch term #{id} unsuccessful for#{subauth_warn_msg} authority #{vocab_param}" logger.warn msg render json: { errors: msg }, status: :internal_server_error rescue RDF::FormatError msg = "RDF Format Error - Results from fetch term #{id} for#{subauth_warn_msg} authority #{vocab_param} " \ "was not identified as a valid RDF format. You may need to include the linkeddata gem." logger.warn msg render json: { errors: msg }, status: :internal_server_error rescue Qa::DataNormalizationError => e msg = "Data Normalization Error - #{e.}" logger.warn msg render json: { errors: msg }, status: :internal_server_error end |