class Zuora::Calls::Subscribe

Constants

SIMPLE_OBJECTS

Public Instance Methods

xml_builder() click to toggle source

Generates a function that adds login fields to a buidler @return [Callable] function of builder

# File lib/zuora/calls/subscribe.rb, line 19
def xml_builder
  lambda do |builder|
    builder[:api].subscribe do
      builder[:api].subscribes do
        build_simple_objects builder
        build_complex_objects builder
      end
    end
  end
end

Private Instance Methods

build_complex_objects(builder) click to toggle source

Builds the complex, nested part of the subscribe request @param [Nokogiri::XML::Builder] builder

# File lib/zuora/calls/subscribe.rb, line 47
def build_complex_objects(builder)
  if subscribe_options
    builder[:api].SubscribeOptions do
      Zuora::Utils::Envelope.build_fields(builder, :api, subscribe_options)
    end
  end

  builder[:api].SubscriptionData do
    build_object(builder, :Subscription, subscription)
    builder[:api].RatePlanData do
      build_object(builder, :RatePlan, rate_plan)
      builder[:api].RatePlanChargeData do
        build_object(builder, :RatePlanCharge, rate_plan_charge)
      end
    end
  end
end
build_fields(builder, data) click to toggle source
Nokogiri::XML::Builder

builder

Nokogiri::XML::Builder

builder

Hash

data

# File lib/zuora/calls/subscribe.rb, line 80
def build_fields(builder, data)
  Zuora::Utils::Envelope.build_fields(builder, :obj, data)
end
build_object(builder, type, data) click to toggle source

Helper for building one object

Nokogiri::XML::Builder

builder

Symbol

type

Hash

data

# File lib/zuora/calls/subscribe.rb, line 69
def build_object(builder, type, data)
  if data
    builder[:api].send(type) do
      build_fields builder, data
    end
  end
end
build_simple_objects(builder) click to toggle source

Builds the non-complex / non-nested part of the subscribe request @param [Nokogiri::XML::Builder] builder

# File lib/zuora/calls/subscribe.rb, line 34
def build_simple_objects(builder)
  SIMPLE_OBJECTS.each do |obj_name|
    obj = send obj_name
    next unless obj
    zuora_name = Zuora::Utils::Envelope.to_zuora_key obj_name
    builder[:api].send(zuora_name) do
      Zuora::Utils::Envelope.build_fields(builder, :obj, obj)
    end
  end
end