psu-libraries/psulib_blacklight

View on GitHub
app/controllers/links/hathi_link_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

require 'net/http'

module Links
  class HathiLinkController < ActionController::API
    def data
      render json: json_response
    end

    private

      def json_response
        if send_request.present?
          JSON.parse(send_request)['items']&.each do |item|
            return { itemUrl: item['itemURL'] }.to_json if item['usRightsString'] == 'Full view'
          end
        end
        { itemUrl: nil }.to_json
      end

      def send_request
        @send_request ||= Net::HTTP.get(uri)
      end

      def uri
        URI("https://catalog.hathitrust.org/api/volumes/brief/#{search_item}.json")
      end

      def search_item
        params['search_item']
      end
  end
end