lib/gds_api/finder_api.rb



require_relative 'base'
require_relative 'finder_schema'

module GdsApi
  class FinderApi < Base
    def initialize(url, options = {})
      @schema_factory = options.fetch(:schema_factory) { FinderSchema.method(:new) }
      super
    end

    def get_documents(finder_slug, options = {})
      get_json(documents_url(finder_slug, options))
    end

    def get_schema(finder_slug, options = {})
      @schema_factory.call(
        get_json(finder_url(finder_slug, 'schema', options)).to_hash
      )
    end

  private
    def documents_url(finder_slug, options = {})
      finder_url(finder_slug, 'documents', options)
    end

    def finder_url(finder_slug, action, options = {})
      "#{endpoint}/finders/#{CGI.escape(finder_slug)}/#{action}.json#{query_string(options)}"
    end
  end
end