mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[stormondemand|account] Add Account service and token APIs
This commit is contained in:
parent
5f44aa8498
commit
ed231cee87
6 changed files with 158 additions and 0 deletions
25
lib/fog/account.rb
Normal file
25
lib/fog/account.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
module Fog
|
||||
module Account
|
||||
|
||||
def self.[](provider)
|
||||
self.new(:provider => provider)
|
||||
end
|
||||
|
||||
def self.new(attributes)
|
||||
attributes = attributes.dup
|
||||
provider = attributes.delete(:provider).to_s.downcase.to_sym
|
||||
|
||||
if provider == :stormondemand
|
||||
require 'fog/storm_on_demand/account'
|
||||
Fog::Account::StormOnDemand.new(attributes)
|
||||
else
|
||||
raise ArgumentError.new("#{provider} has no account service")
|
||||
end
|
||||
end
|
||||
|
||||
def self.providers
|
||||
Fog.services[:account]
|
||||
end
|
||||
|
||||
end
|
||||
end
|
58
lib/fog/storm_on_demand/account.rb
Normal file
58
lib/fog/storm_on_demand/account.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
require 'fog/storm_on_demand'
|
||||
require 'fog/storm_on_demand/shared'
|
||||
require 'fog/account'
|
||||
|
||||
module Fog
|
||||
module Account
|
||||
|
||||
class StormOnDemand < Fog::Service
|
||||
|
||||
requires :storm_on_demand_username, :storm_on_demand_password
|
||||
recognizes :storm_on_demand_auth_url
|
||||
|
||||
model_path 'fog/storm_on_demand/models/account'
|
||||
model :token
|
||||
collection :tokens
|
||||
|
||||
request_path 'fog/storm_on_demand/requests/account'
|
||||
request :create_token
|
||||
request :expire_token
|
||||
|
||||
class Mock
|
||||
|
||||
def self.data
|
||||
@data ||= Hash.new
|
||||
end
|
||||
|
||||
def self.reset
|
||||
@data = nil
|
||||
end
|
||||
|
||||
def self.reset_data(keys=data.keys)
|
||||
for key in [*keys]
|
||||
data.delete(key)
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(options={})
|
||||
@storm_on_demand_username = options[:storm_on_demand_username]
|
||||
end
|
||||
|
||||
def data
|
||||
self.class.data[@storm_on_demand_username]
|
||||
end
|
||||
|
||||
def reset_data
|
||||
self.class.data.delete(@storm_on_demand_username)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Real
|
||||
|
||||
include Fog::StormOnDemand::RealShared
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
23
lib/fog/storm_on_demand/models/account/token.rb
Normal file
23
lib/fog/storm_on_demand/models/account/token.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
require 'fog/core/model'
|
||||
|
||||
module Fog
|
||||
module Account
|
||||
class StormOnDemand
|
||||
|
||||
class Token < Fog::Model
|
||||
attribute :token
|
||||
attribute :expires
|
||||
|
||||
def initialize(attributes={})
|
||||
super
|
||||
end
|
||||
|
||||
def expire
|
||||
service.expire_token.body['expired'].to_i == 1 ? true : false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
20
lib/fog/storm_on_demand/models/account/tokens.rb
Normal file
20
lib/fog/storm_on_demand/models/account/tokens.rb
Normal file
|
@ -0,0 +1,20 @@
|
|||
require 'fog/core/collection'
|
||||
require 'fog/storm_on_demand/models/account/token'
|
||||
|
||||
module Fog
|
||||
module Account
|
||||
class StormOnDemand
|
||||
|
||||
class Tokens < Fog::Collection
|
||||
model Fog::Account::StormOnDemand::Token
|
||||
|
||||
def create(options={})
|
||||
t = service.create_token(options).body
|
||||
new(t)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
16
lib/fog/storm_on_demand/requests/account/create_token.rb
Normal file
16
lib/fog/storm_on_demand/requests/account/create_token.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
module Fog
|
||||
module Account
|
||||
class StormOnDemand
|
||||
class Real
|
||||
|
||||
def create_token(options={})
|
||||
request(
|
||||
:path => '/Account/Auth/token',
|
||||
:body => Fog::JSON.encode(:params => options)
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
16
lib/fog/storm_on_demand/requests/account/expire_token.rb
Normal file
16
lib/fog/storm_on_demand/requests/account/expire_token.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
module Fog
|
||||
module Account
|
||||
class StormOnDemand
|
||||
class Real
|
||||
|
||||
def expire_token(options={})
|
||||
request(
|
||||
:path => '/Account/Auth/expireToken',
|
||||
:body => Fog::JSON.encode(:params => options)
|
||||
)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue