mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00

Fog::Connection mixed in XML parsing via the `parser` argument which wasn't much use for the majority of APIs using JSON. This adds the deprecation warning and attempts to update providers to the correct version of Connection that they need. Either the cleaner `Fog::Core::Connection` or if reliant on the XML parsing still `Fog::XML::SAXParserConnection` The SAX parser will be moving to `fog/xml` fairly soon.
54 lines
1.8 KiB
Ruby
54 lines
1.8 KiB
Ruby
module Fog
|
|
module StormOnDemand
|
|
module RealShared
|
|
|
|
API_URL = 'https://api.stormondemand.com'
|
|
API_VERSION = 'v1'
|
|
|
|
def initialize(options={})
|
|
uri = URI.parse(options[:storm_on_demand_auth_url] ||= API_URL)
|
|
@connection_options = options[:connection_options] || {}
|
|
@host = uri.host
|
|
@path = uri.path
|
|
@persistent = options[:persistent] || false
|
|
@port = uri.port
|
|
@scheme = uri.scheme
|
|
@storm_on_demand_username = options[:storm_on_demand_username]
|
|
@storm_on_demand_password = options[:storm_on_demand_password]
|
|
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
|
end
|
|
|
|
def reload
|
|
@connection.reset
|
|
end
|
|
|
|
def request(params)
|
|
begin
|
|
response = @connection.request(params.merge!({
|
|
:headers => {
|
|
'Content-Type' => 'application/json',
|
|
'Authorization' => 'Basic ' << Base64.encode64("#{@storm_on_demand_username}:#{@storm_on_demand_password}").chomp
|
|
}.merge!(params[:headers] || {}),
|
|
:path => "#{@path}/#{API_VERSION}#{params[:path]}",
|
|
:expects => 200,
|
|
:method => :post
|
|
}))
|
|
rescue Excon::Errors::HTTPStatusError => error
|
|
raise case error
|
|
when Excon::Errors::NotFound
|
|
Fog::StormOnDemand::Compute::NotFound.slurp(error)
|
|
else
|
|
error
|
|
end
|
|
end
|
|
unless response.body.empty?
|
|
response.body = Fog::JSON.decode(response.body)
|
|
end
|
|
if response.body.has_key?('error_class')
|
|
raise(Fog::Compute::StormOnDemand::Error, response.body.inspect)
|
|
end
|
|
response
|
|
end
|
|
end
|
|
end
|
|
end
|