def initialize(config, options={})
if config[:uri].nil? && config[:apidoc_cache_dir].nil?
raise ApipieBindings::ConfigurationError.new('Either :uri or :apidoc_cache_dir needs to be set')
end
@uri = config[:uri]
@api_version = config[:api_version] || 1
@language = config[:language]
@apidoc_cache_dir = config[:apidoc_cache_dir] || File.join(File.expand_path('~/.cache'), 'apipie_bindings', @uri.tr(':/', '_'))
@apidoc_cache_name = config[:apidoc_cache_name] || set_default_name
@dry_run = config[:dry_run] || false
@aggressive_cache_checking = config[:aggressive_cache_checking] || false
@fake_responses = config[:fake_responses] || {}
@logger = config[:logger]
unless @logger
@logger = Logger.new(STDERR)
@logger.level = Logger::ERROR
end
config = config.dup
headers = {
:content_type => 'application/json',
:accept => "application/json;version=#{@api_version}"
}
headers.merge!({ "Accept-Language" => language }) if language
headers.merge!(config[:headers]) unless config[:headers].nil?
headers.merge!(options.delete(:headers)) unless options[:headers].nil?
log.debug "Global headers: #{headers.ai}"
resource_config = {
:user => config[:username],
:password => config[:password],
:oauth => config[:oauth],
:timeout => config[:timeout],
:headers => headers
}.merge(options)
@client = RestClient::Resource.new(config[:uri], resource_config)
@config = config
end