Sha256: 25e236bbedb3c0e4bdb200bbebcee3942e3fcf9d0a54356bf93e6ff6ae43b90b
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
# 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 authotirty classes inherit from a # super class so they implement the same methods. class Qa::TermsController < ApplicationController before_action :check_vocab_param, :init_authority before_action :check_query_param, only: :search # If the subauthority supports it, return a list of all terms in the authority def index render json: @authority.all end # Return a list of terms based on a query def search terms = @authority.search(url_search) render json: terms end # If the subauthority supports it, return all the information for a given term def show term = @authority.find(params[:id]) render json: term end def check_vocab_param head :not_found unless params[:vocab].present? end 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 def check_query_param head :not_found unless params[:q].present? end private def authority_class "Qa::Authorities::"+params[:vocab].capitalize end # converts wildcards into URL-encoded characters def url_search params[:q].gsub("*", "%2A") end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
qa-0.6.0 | app/controllers/qa/terms_controller.rb |