Class: ConfigurationService::Client
- Inherits:
-
Object
- Object
- ConfigurationService::Client
- Defined in:
- lib/configuration_service/client.rb
Instance Method Summary collapse
-
#authorize_consumption(identifier: nil) ⇒ String
Authorize consumption of a configuration ie.
-
#initialize(credentials: nil, provider: nil, identifier: nil) ⇒ Client
constructor
Creates a new instance of configuration service client.
-
#publish_configuration(identifier: nil, data: nil, metadata: {}) ⇒ ConfigurationService::Configuration
Publishes configuration data and metadata.
-
#request_configuration(identifier: nil) ⇒ ConfigurationService::Configuration
Requests the configuration data and metadata Delegates the request to the configured
provider.
Constructor Details
#initialize(credentials: nil, provider: nil, identifier: nil) ⇒ Client
Creates a new instance of configuration service client
17 18 19 20 21 22 23 |
# File 'lib/configuration_service/client.rb', line 17 def initialize(credentials: nil, provider: nil, identifier: nil) #raise(ArgumentError, "missing argument credentials") unless credentials raise(ArgumentError, "missing argument provider") unless provider @credentials = credentials @provider = provider @identifier = identifier end |
Instance Method Details
#authorize_consumption(identifier: nil) ⇒ String
Authorize consumption of a configuration ie. get credentials to consume configurations ie. get a token to consume configurations
85 86 87 88 89 |
# File 'lib/configuration_service/client.rb', line 85 def (identifier: nil) identifier = identifier_argument_or_instance_variable(identifier) @provider.(identifier, @credentials) or raise ConfigurationNotFoundError, "configuration not found for identifier: #{identifier}" end |
#publish_configuration(identifier: nil, data: nil, 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.
65 66 67 68 69 70 71 72 73 |
# File 'lib/configuration_service/client.rb', line 65 def publish_configuration(identifier: nil, data: nil, metadata: {}) identifier = identifier_argument_or_instance_variable(identifier) Utils.dictionary?(data) or raise ConfigurationService::Error, "data must be a dictionary" Utils.dictionary?() or raise ConfigurationService::Error, "metadata must be a dictionary" = Utils.decorate() configuration = Configuration.new(identifier, data, ) @provider.publish_configuration(configuration, @credentials) end |
#request_configuration(identifier: nil) ⇒ ConfigurationService::Configuration
Requests the configuration data and metadata Delegates the request to the configured provider.
36 37 38 39 40 |
# File 'lib/configuration_service/client.rb', line 36 def request_configuration(identifier: nil) identifier = identifier_argument_or_instance_variable(identifier) @provider.request_configuration(identifier, @credentials) or raise ConfigurationNotFoundError, "configuration not found for identifier: #{identifier}" end |