datacite/spinone

View on GitHub
app/controllers/data_centers_controller.rb

Summary

Maintainability
A
25 mins
Test Coverage
class DataCentersController < ApplicationController
  before_action :set_include

  def index
    @data_centers = DataCenter.where(params)
    fail AbstractController::ActionNotFound unless @data_centers.present?

    @data_centers[:meta]["members"] = @data_centers[:meta].delete "providers"

    options = {}
    options[:meta] = @data_centers[:meta]
    options[:include] = @include

    @data_centers = @data_centers[:data]

    render json: DataCenterSerializer.new(@data_centers, options).serialized_json, status: :ok
  end

  def show
    @data_center = DataCenter.where(id: params[:id])
    fail AbstractController::ActionNotFound unless @data_center.present?

    @data_center = @data_center[:data]

    render json: DataCenterSerializer.new(@data_center).serialized_json, status: :ok
  end

  def set_include
    if params[:include].present?
      @include = params[:include].split(",").map { |i| i.downcase.underscore.to_sym }
    else
      @include = nil
    end
  end
end