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.



4868
4869
4870
4871
4872
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 4868

def initialize(incoming={})
  opts = HttpClient::Helper.symbolize_keys(incoming)
  HttpClient::Preconditions.require_keys(opts, [:discriminator], 'Delivery')
  @discriminator = HttpClient::Preconditions.assert_class('discriminator', opts.delete(:discriminator), String)
end

Instance Attribute Details

#discriminatorObject (readonly)

Returns the value of attribute discriminator.



4866
4867
4868
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 4866

def discriminator
  @discriminator
end

Class Method Details

.from_json(hash) ⇒ Object



4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 4882

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



4874
4875
4876
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 4874

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



4878
4879
4880
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 4878

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