Class: Io::Flow::V0::Models::Delivery

Inherits:
Object
  • Object
show all
Defined in:
lib/flow_commerce/flow_api_v0_client.rb

Overview

A delivery represents a group of items that will be delivered together - presenting a single price and delivery time frame, where applicable, to the user. Deliveries commonly are created based on the type of item and, for physical goods, their center of origin

Defined Under Namespace

Modules: Types

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(incoming = {}) ⇒ Delivery

Returns a new instance of Delivery.



9610
9611
9612
9613
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 9610

def initialize(incoming={})
  opts = HttpClient::Helper.symbolize_keys(incoming)
  @discriminator = HttpClient::Preconditions.assert_class('discriminator', opts.delete(:discriminator) || 'physical_delivery', String)
end

Instance Attribute Details

#discriminatorObject (readonly)

Returns the value of attribute discriminator.



9608
9609
9610
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 9608

def discriminator
  @discriminator
end

Class Method Details

.from_json(hash) ⇒ Object



9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 9623

def Delivery.from_json(hash)
  HttpClient::Preconditions.assert_class('hash', hash, Hash)
  discriminator = HttpClient::Helper.symbolize_keys(hash)[:discriminator].to_s.strip
  if discriminator.empty?
    raise "Union type[delivery] requires a field named 'discriminator'"
  end
  case discriminator
    when Types::DIGITAL_DELIVERY; DigitalDelivery.new(hash)
    when Types::PHYSICAL_DELIVERY; PhysicalDelivery.new(hash)
    else DeliveryUndefinedType.new(:discriminator => discriminator)
  end
end

Instance Method Details

#subtype_to_hashObject



9615
9616
9617
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 9615

def subtype_to_hash
  raise 'Cannot serialize an instance of delivery directly - must use one of the specific types: digital_delivery, physical_delivery'
end

#to_hashObject



9619
9620
9621
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 9619

def to_hash
  subtype_to_hash.merge(:discriminator => @discriminator)
end