Module: Krypt::Provider

Defined in:
lib/krypt/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



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

def by_name(name)
  PROVIDERS[name]
end

.new_service(klass, *args) ⇒ Object



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

def new_service(klass, *args)
  PROVIDER_LIST.reverse.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(name, provider) ⇒ Object

Raises:



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

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

.remove(name) ⇒ Object



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

def remove(name)
  PROVIDERS.delete(name)
  PROVIDER_LIST.delete(name)
end