class GdsApi::Base

def self.logger

def self.logger
  @logger ||= NullLogger.instance
end

def client

def client
  @client ||= create_client
end

def create_client

def create_client
  GdsApi::JsonClient.new(options)
end

def get_list!(url)

def get_list!(url)
  get_json!(url) do |r|
    GdsApi::ListResponse.new(r, self)
  end
end

def initialize(endpoint_url, options={})

def initialize(endpoint_url, options={})
  options[:endpoint_url] = endpoint_url
  raise InvalidAPIURL unless endpoint_url =~ URI::regexp
  base_options = { logger: self.class.logger }
  default_options = base_options.merge(GdsApi::Base.default_options || {})
  @options = default_options.merge(options)
  self.endpoint = options[:endpoint_url]
end

def query_string(params)

def query_string(params)
  return "" if params.empty?
  param_pairs = params.sort.map { |key, value|
    case value
    when Array
      value.map { |v|
        "#{CGI.escape(key.to_s+'[]')}=#{CGI.escape(v.to_s)}"
      }
    else
      "#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}"
    end
  }.flatten
  "?#{param_pairs.join("&")}"
end

def url_for_slug(slug, options={})

def url_for_slug(slug, options={})
  "#{base_url}/#{slug}.json#{query_string(options)}"
end