Class: Qa::TermsController

Inherits:
ApplicationController show all
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

Instance Method Details

#check_query_paramObject



53
54
55
# File 'app/controllers/qa/terms_controller.rb', line 53

def check_query_param
  head :not_found unless params[:q].present?
end

#check_vocab_paramObject



28
29
30
# File 'app/controllers/qa/terms_controller.rb', line 28

def check_vocab_param
  head :not_found unless params[:vocab].present?
end

#indexObject

If the subauthority supports it, return a list of all terms in the authority



12
13
14
# File 'app/controllers/qa/terms_controller.rb', line 12

def index
  render json: @authority.all
end

#init_authorityObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/controllers/qa/terms_controller.rb', line 32

def init_authority
  begin
    mod = authority_class.camelize.constantize
  rescue NameError => e
    logger.warn "Unable to initialize authority #{authority_class}"
    head :not_found
    return
  end
  begin
    @authority = if mod.kind_of? Class
      mod.new
    else
      raise Qa::MissingSubAuthority, "No sub-authority provided" if params[:subauthority].blank?
      mod.subauthority_for(params[:subauthority])
    end
  rescue Qa::InvalidSubAuthority, Qa::MissingSubAuthority => e
    logger.warn e.message
    head :not_found
  end
end

#searchObject

Return a list of terms based on a query



17
18
19
20
# File 'app/controllers/qa/terms_controller.rb', line 17

def search
  terms = @authority.search(url_search)
  render json: terms
end

#showObject

If the subauthority supports it, return all the information for a given term



23
24
25
26
# File 'app/controllers/qa/terms_controller.rb', line 23

def show
  term = @authority.find(params[:id])
  render json: term
end