Class: EtcdDiscovery::Host
- Inherits:
-
Object
- Object
- EtcdDiscovery::Host
- Defined in:
- lib/etcd-discovery/host.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
Instance Method Summary collapse
-
#initialize(arg) ⇒ Host
constructor
A new instance of Host.
- #set_credentials(user, password) ⇒ Object
- #to_json ⇒ Object
- #to_private_uri(schemes = ["https", "http"]) ⇒ Object
- #to_s ⇒ Object
- #to_uri(schemes = ["https", "http"]) ⇒ Object
Constructor Details
#initialize(arg) ⇒ Host
Returns a new instance of Host.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/etcd-discovery/host.rb', line 8 def initialize(arg) if arg.is_a? Etcd::Node @attributes = JSON.parse arg.value elsif arg.is_a? Hash @attributes = arg else raise TypeError, "requires a Etcd::Node or a Hash, not a #{arg.class}" end if !attributes.has_key?('name') or !attributes.has_key?('ports') raise InvalidHost, "attributes 'name' and 'ports' should be defined" end attributes['user'] = "" if attributes['user'].nil? attributes['password'] = "" if attributes['password'].nil? end |
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
6 7 8 |
# File 'lib/etcd-discovery/host.rb', line 6 def attributes @attributes end |
Instance Method Details
#set_credentials(user, password) ⇒ Object
57 58 59 60 |
# File 'lib/etcd-discovery/host.rb', line 57 def set_credentials(user, password) @attributes['user'] = user @attributes['password'] = password end |
#to_json ⇒ Object
23 24 25 |
# File 'lib/etcd-discovery/host.rb', line 23 def to_json attributes.to_json end |
#to_private_uri(schemes = ["https", "http"]) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/etcd-discovery/host.rb', line 40 def to_private_uri(schemes = ["https", "http"]) a = attributes if a['private_hostname'].empty? return self.to_uri(schemes) end schemes = [schemes] if !schemes.is_a?(Array) scheme = schemes.select{ |s| !a['private_ports'][s].nil? }.first if a['user'].nil? || a['user'] == "" URI("#{scheme}://#{a['private_hostname']}:#{a['private_ports'][scheme]}") else URI("#{scheme}://#{a['user']}:#{a['password']}@#{a['private_hostname']}:#{a['private_ports'][scheme]}") end end |
#to_s ⇒ Object
62 63 64 |
# File 'lib/etcd-discovery/host.rb', line 62 def to_s self.to_uri.to_s end |
#to_uri(schemes = ["https", "http"]) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/etcd-discovery/host.rb', line 27 def to_uri(schemes = ["https", "http"]) a = attributes # Shorten name schemes = [schemes] if !schemes.is_a?(Array) scheme = schemes.select{|s| !a['ports'][s].nil? }.first if a['user'].empty? URI("#{scheme}://#{a['name']}:#{a['ports'][scheme]}") else URI("#{scheme}://#{a['user']}:#{a['password']}@#{a['name']}:#{a['ports'][scheme]}") end end |