Module: Krypt::Provider

Defined in:
lib/krypt/provider/provider.rb

Defined Under Namespace

Classes: AlreadyExistsError, ServiceNotAvailableError

Constant Summary collapse

PROVIDERS =
{}
PROVIDER_LIST =
[]

Class Method Summary collapse

Class Method Details

.by_name(name) ⇒ Object



19
20
21
# File 'lib/krypt/provider/provider.rb', line 19

def by_name(name)
  PROVIDERS[name]
end

.new_service(klass, *args) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/krypt/provider/provider.rb', line 29

def new_service(klass, *args)
  PROVIDER_LIST.each do |name| 
    service = PROVIDERS[name].new_service(klass, *args)
    return service if service
  end
  raise ServiceNotAvailableError.new("The requested service is not available")
end

.register(provider, name = nil) ⇒ Object

Raises:



12
13
14
15
16
17
# File 'lib/krypt/provider/provider.rb', line 12

def register(provider, name=nil)
  name ||= provider.name
  raise AlreadyExistsError.new("There already is a Provider named #{name}") if PROVIDERS.has_key?(name)
  PROVIDERS[name] = provider
  PROVIDER_LIST.unshift(name)
end

.remove(name) ⇒ Object



23
24
25
26
27
# File 'lib/krypt/provider/provider.rb', line 23

def remove(name)
  p = PROVIDERS.delete(name)
  PROVIDER_LIST.delete(name)
  p.finalize
end