lib/gds_api/rummager.rb
require 'gds_api/base' require 'rack/utils' module GdsApi class Rummager < Base def search(query, extra_params={}) raise ArgumentError.new("Query cannot be blank") if query.nil? || query.strip.empty? get_json!(search_url(:search, query, extra_params)) end def unified_search(args) request_url = "#{base_url}/unified_search.json?#{Rack::Utils.build_nested_query(args)}" get_json!(request_url) end def advanced_search(args) raise ArgumentError.new("Args cannot be blank") if args.nil? || args.empty? request_path = "#{base_url}/advanced_search?#{Rack::Utils.build_nested_query(args)}" get_json!(request_path) end def organisations get_json!("#{base_url}/organisations") end def add_document(type, id, document) post_json!( documents_url, document.merge( _type: type, _id: id, ) ) end def delete_document(type, id) delete_json!( "#{documents_url}/#{id}", _type: type, ) end private def search_url(type, query, extra_params={}) request_path = "#{base_url}/#{type}?q=#{CGI.escape(query)}" if extra_params request_path << "&" request_path << Rack::Utils.build_query(extra_params) end request_path end def base_url endpoint end def documents_url "#{base_url}/documents" end end end