Class: Surfliner::MetadataConsumer::Payload
- Inherits:
-
Object
- Object
- Surfliner::MetadataConsumer::Payload
- Defined in:
- lib/surfliner/metadata_consumer/payload.rb
Overview
Encapsulates a Surfliner resource message payload.
Defined Under Namespace
Classes: UnknownStatus
Constant Summary collapse
- KNOWN_STATUSES =
Expected resource status values.
[:published, :updated, :unpublished, :deleted]
Instance Attribute Summary collapse
-
#data ⇒ Hash
readonly
The payload data as a Hash.
Instance Method Summary collapse
-
#initialize(payload) ⇒ Payload
constructor
Initializes a new
Payloadfrom the specified data. -
#resource_url ⇒ String
The URL for the resource.
-
#status ⇒ Symbol
The resource status as a symbol.
-
#to_json ⇒ String
The payload data as a JSON string.
-
#to_s ⇒ String
The payload data as a stringified hash.
Constructor Details
#initialize(payload) ⇒ Payload
Initializes a new Payload from the specified data.
If data is provided as a string, it is parsed as JSON.
16 17 18 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 16 def initialize(payload) @data = normalize(payload) end |
Instance Attribute Details
#data ⇒ Hash (readonly)
Returns the payload data as a Hash.
9 10 11 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 9 def data @data end |
Instance Method Details
#resource_url ⇒ String
Returns the URL for the resource.
31 32 33 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 31 def resource_url @resource_url ||= data.fetch(:resourceUrl) end |
#status ⇒ Symbol
Returns the resource status as a symbol.
37 38 39 40 41 42 43 44 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 37 def status @status ||= begin status_str = data.fetch(:status) do raise(UnknownStatus, "Payload status is not defined in payload: #{data}") end status_str.to_sym end end |
#to_json ⇒ String
Returns The payload data as a JSON string.
21 22 23 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 21 def to_json data.to_json end |
#to_s ⇒ String
Returns The payload data as a stringified hash.
26 27 28 |
# File 'lib/surfliner/metadata_consumer/payload.rb', line 26 def to_s data.to_s end |