Class: ConfigurationService::Base
- Inherits:
-
Object
- Object
- ConfigurationService::Base
- Defined in:
- lib/configuration_service/base.rb
Overview
Instance Method Summary collapse
-
#initialize(identifier, token, provider) ⇒ Base
constructor
Creates a new configuration service API instance.
-
#publish_configuration(data, metadata = {}) ⇒ ConfigurationService::Configuration
Publishes configuration data and metadata.
-
#request_configuration ⇒ ConfigurationService::Configuration
Requests the configuration data and metadata.
Constructor Details
#initialize(identifier, token, provider) ⇒ Base
Creates a new configuration service API instance
31 32 33 34 35 |
# File 'lib/configuration_service/base.rb', line 31 def initialize(identifier, token, provider) @identifier = identifier @token = token @provider = provider end |
Instance Method Details
#publish_configuration(data, metadata = {}) ⇒ ConfigurationService::Configuration
Publishes configuration data and metadata
The metadata is decorated with the following keys:
-
“timestamp” - the current UTC time in ISO8601 format
-
“revision” - a UUID for this publication
Delegates the request to the configured provider. The provider may further decorate the metadata.
It is recommended that both the data and metadata dictionaries use strings as keys, and that values be limited to those that can be serialized to JSON.
72 73 74 75 76 77 78 79 |
# File 'lib/configuration_service/base.rb', line 72 def publish_configuration(data, = {}) dictionary?(data) or raise ConfigurationService::Error, "data must be a dictionary" dictionary?() or raise ConfigurationService::Error, "metadata must be a dictionary" = decorate() configuration = Configuration.new(@identifier, data, ) @provider.publish_configuration(configuration, @token) end |
#request_configuration ⇒ ConfigurationService::Configuration
Requests the configuration data and metadata
Delegates the request to the configured provider.
46 47 48 49 |
# File 'lib/configuration_service/base.rb', line 46 def request_configuration @provider.request_configuration(@identifier, @token) or raise ConfigurationNotFoundError, "configuration not found for identifier: #{@identifier}" end |