mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
module Fog
|
|
module AWS
|
|
class Federation < Fog::Service
|
|
extend Fog::AWS::CredentialFetcher::ServiceMethods
|
|
|
|
recognizes :instrumentor, :instrumentor_name
|
|
|
|
request_path 'fog/aws/requests/federation'
|
|
|
|
request 'get_signin_token'
|
|
|
|
class Mock
|
|
def self.data
|
|
@data ||= {}
|
|
end
|
|
|
|
def self.reset
|
|
@data = nil
|
|
end
|
|
|
|
def initialize(options={})
|
|
end
|
|
|
|
def data
|
|
self.class.data
|
|
end
|
|
|
|
def reset_data
|
|
self.class.reset
|
|
end
|
|
end
|
|
|
|
class Real
|
|
include Fog::AWS::CredentialFetcher::ConnectionMethods
|
|
|
|
def initialize(options={})
|
|
@instrumentor = options[:instrumentor]
|
|
@instrumentor_name = options[:instrumentor_name] || 'fog.aws.federation'
|
|
@connection_options = options[:connection_options] || {}
|
|
@host = 'signin.aws.amazon.com'
|
|
@path = '/federation'
|
|
@scheme = 'https'
|
|
@connection = Excon.new("#{@scheme}://#{@host}#{@path}")
|
|
end
|
|
|
|
def request(action, session)
|
|
response = @connection.get(
|
|
:query => "Action=#{action}&SessionType=json&Session=#{session}",
|
|
:expects => 200
|
|
).body
|
|
Fog::JSON.decode(response)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|