Class: Qa::TermsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- Qa::TermsController
- Defined in:
- app/controllers/qa/terms_controller.rb
Overview
This controller is used for all requests to all authorities. It will verify params and figure out which class to instantiate based on the “vocab” param. All the authority classes inherit from a super class so they implement the same methods.
Instance Method Summary collapse
- #check_query_param ⇒ Object
- #check_vocab_param ⇒ Object
-
#fetch ⇒ Object
If the subauthority supports it, return all the information for a given term Expects uri to be a request parameter (e.g. my.app/qa/show/auth/subauth?uri=:uri).
-
#index ⇒ Object
If the subauthority supports it, return a list of all terms in the authority.
-
#init_authority ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#search ⇒ Object
Return a list of terms based on a query.
-
#show ⇒ Object
If the subauthority supports it, return all the information for a given term Expects id to be part of the request path (e.g. my.app/qa/show/auth/subauth/:id).
Instance Method Details
#check_query_param ⇒ Object
75 76 77 78 79 80 |
# File 'app/controllers/qa/terms_controller.rb', line 75 def check_query_param return if params[:q].present? msg = "Required param 'q' is missing or empty" logger.warn msg render json: { errors: msg }, status: :bad_request end |
#check_vocab_param ⇒ Object
45 46 47 48 49 50 |
# File 'app/controllers/qa/terms_controller.rb', line 45 def check_vocab_param return if params[:vocab].present? msg = "Required param 'vocab' is missing or empty" logger.warn msg render json: { errors: msg }, status: :bad_request end |
#fetch ⇒ Object
If the subauthority supports it, return all the information for a given term Expects uri to be a request parameter (e.g. my.app/qa/show/auth/subauth?uri=:uri)
39 40 41 42 43 |
# File 'app/controllers/qa/terms_controller.rb', line 39 def fetch term = @authority.method(:find).arity == 2 ? @authority.find(params[:uri], self) : @authority.find(params[:uri]) cors_allow_origin_header(response) render json: term, content_type: content_type_for_format end |
#index ⇒ Object
If the subauthority supports it, return a list of all terms in the authority
13 14 15 16 17 18 19 20 |
# File 'app/controllers/qa/terms_controller.rb', line 13 def index cors_allow_origin_header(response) render json: begin @authority.all rescue NotImplementedError nil end end |
#init_authority ⇒ Object
rubocop:disable Metrics/MethodLength
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/controllers/qa/terms_controller.rb', line 52 def # rubocop:disable Metrics/MethodLength begin mod = .camelize.constantize rescue NameError msg = "Unable to initialize authority #{}" logger.warn msg render json: { errors: msg }, status: :bad_request return end begin @authority = if mod.is_a? Class mod.new else raise Qa::MissingSubAuthority, "No sub-authority provided" if params[:subauthority].blank? mod.(params[:subauthority]) end rescue Qa::InvalidSubAuthority, Qa::MissingSubAuthority => e msg = e. logger.warn msg render json: { errors: msg }, status: :bad_request end end |
#search ⇒ Object
Return a list of terms based on a query
23 24 25 26 27 |
# File 'app/controllers/qa/terms_controller.rb', line 23 def search terms = @authority.method(:search).arity == 2 ? @authority.search(url_search, self) : @authority.search(url_search) cors_allow_origin_header(response) render json: terms end |
#show ⇒ Object
If the subauthority supports it, return all the information for a given term Expects id to be part of the request path (e.g. my.app/qa/show/auth/subauth/:id)
31 32 33 34 35 |
# File 'app/controllers/qa/terms_controller.rb', line 31 def show term = @authority.method(:find).arity == 2 ? @authority.find(params[:id], self) : @authority.find(params[:id]) cors_allow_origin_header(response) render json: term, content_type: content_type_for_format end |