Class: Nomad::Response
- Inherits:
-
Object
- Object
- Nomad::Response
- Defined in:
- lib/nomad/response.rb
Direct Known Subclasses
AgentJoin, AgentMember, AgentMembers, AgentSelf, Alloc, AllocationMetric, Eval, JobArtifact, JobChildren, JobConstraint, JobCreate, JobDispatchPayload, JobEphemeralDisk, JobItem, JobLogConfig, JobParameterizedJob, JobPeriodic, JobRestartPolicy, JobService, JobServiceCheck, JobSummary, JobTask, JobTaskGroup, JobTaskGroupSummary, JobTemplate, JobUpdate, JobValidation, JobVault, JobVersion, Network, NodeEvaluation, NodeItem, Operator::RaftConfiguration, Operator::RaftConfigurationItem, Port, Resources, Server, TaskEvent, TaskState
Constant Summary collapse
- BUILTIN_LOADERS =
{ # Loads an array as an array of strings array_of_strings: ->(item) { Array(item).map(&:to_s) }, # Parses an integer as a timestamp (18394289434). seconds_as_timestamp: ->(item) { Time.at(item || 0) }, # Parses the given integer as a duration. nanoseconds_as_duration: ->(item) { Duration.new(item || 0) }, # Parses the given integer as the number of nanoseconds since the unix # epoch. nanoseconds_as_timestamp: ->(item) { Time.at((item || 0) / 1e9) }, # Parses the given integer as a "size". int_as_size_in_megabytes: ->(item) { Size.new(Float(item || 0) * Size::MEGABYTE) }, # Parses the given integer as a "size". int_as_size_in_megabits: ->(item) { Size.new(Float(item || 0) * Size::MEGABIT) }, # Returns an empty array if the given item is nil, otherwise returns the # item. nil_as_array: ->(item) { item || [] }, # Parses the value as a string, converting "" to nil (go compat). string_as_nil: ->(item) { if item.nil? || item.strip.empty? nil else item end }, stringify_keys: ->(item) { Stringify.stringify_keys(item) }, }.freeze
Class Method Summary collapse
-
.decode(object) ⇒ Object?
Decodes the given object (usually a Hash) into an instance of this class.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#initialize(input = {}) ⇒ Response
constructor
A new instance of Response.
-
#to_h ⇒ Hash
Create a hash-bashed representation of this response.
Constructor Details
#initialize(input = {}) ⇒ Response
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/nomad/response.rb', line 80 def initialize(input = {}) # Initialize all fields as nil to start self.class.fields.each do |n, opts| instance_variable_set(:"@#{opts[:as]}", nil) end # For each supplied option, set the instance variable if it was defined # as a field. input.each do |n, v| if self.class.fields.key?(n) opts = self.class.fields[n] if (m = opts[:load]) if m.is_a?(Symbol) v = BUILTIN_LOADERS[m].call(v) else v = m.call(v) end end if opts[:freeze] v = v.freeze end instance_variable_set(:"@#{opts[:as]}", v) end end end |
Class Method Details
.decode(object) ⇒ Object?
Decodes the given object (usually a Hash) into an instance of this class.
75 76 77 78 |
# File 'lib/nomad/response.rb', line 75 def self.decode(object) return nil if object.nil? self.new(object) end |
Instance Method Details
#==(other) ⇒ Object
125 126 127 |
# File 'lib/nomad/response.rb', line 125 def ==(other) self.to_h == other.to_h end |
#to_h ⇒ Hash
Create a hash-bashed representation of this response.
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/nomad/response.rb', line 112 def to_h self.class.fields.inject({}) do |h, (n, opts)| result = self.public_send(opts[:as]) if !result.nil? && !result.is_a?(Array) && result.respond_to?(:to_h) result = result.to_h end h[opts[:as]] = result h end end |