Class: CommandTower::Configuration::Registry::ClientCompatibility::BindingDefinition

Inherits:
Object
  • Object
show all
Includes:
ClassComposer::Generator
Defined in:
lib/command_tower/configuration/registry/client_compatibility/binding_definition.rb

Overview

Host-owned per-platform host-app version bound to a named client contract. Authority §7.

Instance Method Summary collapse

Instance Method Details

#for_platform(platform) ⇒ Object



18
19
20
# File 'lib/command_tower/configuration/registry/client_compatibility/binding_definition.rb', line 18

def for_platform(platform)
  public_send(platform)
end

#validate!(contract_id:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/command_tower/configuration/registry/client_compatibility/binding_definition.rb', line 22

def validate!(contract_id:)
  %i[web ios android].each do |platform|
    value = public_send(platform)
    next if value.blank?

    normalized = CommandTower::ClientCompatibility::Version.normalize(value)
    if normalized.nil?
      raise CommandTower::ClientCompatibility::InvalidVersionError,
        "binding for client contract #{contract_id} has invalid #{platform} #{value.inspect}"
    end

    public_send("#{platform}=", normalized)
  end

  self
end