class GdsApi::Rummager

def add_document(type, id, document)

def add_document(type, id, document)
  post_json!(
    documents_url,
    document.merge(
      _type: type,
      _id: id,
    )
  )
end

def advanced_search(args)

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 base_url

def base_url
  endpoint
end

def delete_document(type, id)

def delete_document(type, id)
  delete_json!(
    "#{documents_url}/#{id}",
    _type: type,
  )
end

def documents_url

def documents_url
  "#{base_url}/documents"
end

def organisations

def organisations
  get_json!("#{base_url}/organisations")
end

def search(query, extra_params={})

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 search_url(type, query, extra_params={})

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 unified_search(args)

def unified_search(args)
  request_url = "#{base_url}/unified_search.json?#{Rack::Utils.build_nested_query(args)}"
  get_json!(request_url)
end