Class: LetsCert::IOPlugin

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/letscert/io_plugin.rb

Overview

Input/output plugin

Author:

  • Sylvain Daubert

Direct Known Subclasses

AccountKey, OpenSSLIOPlugin

Constant Summary collapse

ALLOWED_PLUGINS =

Allowed plugin names

%w(account_key.json cert.der cert.pem chain.pem full.pem) +
%w(fullchain.pem key.der key.pem)
@@registered =

Registered plugins

{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Loggable

included, #logger

Constructor Details

#initialize(name) ⇒ IOPlugin

Returns a new instance of IOPlugin.

Parameters:

  • name (String)


72
73
74
# File 'lib/letscert/io_plugin.rb', line 72

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameString (readonly)

Plugin name

Returns:

  • (String)


34
35
36
# File 'lib/letscert/io_plugin.rb', line 34

def name
  @name
end

Class Method Details

.empty_dataHash

Get empty data

Returns:

  • (Hash)

    { account_key: nil, key: nil, cert: nil, chain: nil }



46
47
48
# File 'lib/letscert/io_plugin.rb', line 46

def self.empty_data
  { account_key: nil, key: nil, cert: nil, chain: nil }
end

.register(klass, *args) ⇒ IOPlugin

Register a plugin

Parameters:

  • klass (Class)
  • args (Array)

    args to pass to klass constructor

Returns:



54
55
56
57
58
59
60
61
62
63
# File 'lib/letscert/io_plugin.rb', line 54

def self.register(klass, *args)
  plugin = klass.new(*args)
  if plugin.name =~ /[\/\\]/ or ['.', '..'].include?(plugin.name)
    raise Error, "plugin name should just be a file name, without path"
  end

  @@registered[plugin.name] = plugin

  klass
end

.registeredHash

Get registered plugins

Returns:

  • (Hash)

    keys are filenames and keys are instances of IOPlugin subclasses.



67
68
69
# File 'lib/letscert/io_plugin.rb', line 67

def self.registered
  @@registered
end

Instance Method Details

#loadObject

This method is abstract.

This method must be overriden in subclasses

Raises:

  • (NotImplementedError)


77
78
79
# File 'lib/letscert/io_plugin.rb', line 77

def load
  raise NotImplementedError
end

#saveObject

This method is abstract.

This method must be overriden in subclasses

Raises:

  • (NotImplementedError)


82
83
84
# File 'lib/letscert/io_plugin.rb', line 82

def save
  raise NotImplementedError
end