Sha256: 87019fc16d2ac966af49e40e6550546ca61c305b4ec6caeb32911e1f7edc50c9

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

require "nokogiri"

module Azure
  module ServiceBus
    module Topics
      class TopicSerializer
        attr_accessor :properties

        PROPERTIES = [
          'MaxSizeInMegabytes',
          'SizeInBytes',
          'DefaultMessageTimeToLive',
          'RequiresDuplicateDetection',
          'DuplicateDetectionHistoryTimeWindow',
          'MaximumNumberOfSubscriptions',
          'EnableBatchedOperations',
          'DeadLetteringOnFilterEvaluationExceptions'
        ].freeze

        def initialize(properties={})
          @properties = properties
          yield self if block_given?
        end

        def to_xml(builder=Nokogiri::XML::Builder)
          doc = builder.new do |xml|
            xml.entry(:xmlns => 'http://www.w3.org/2005/Atom') {
              xml.content(:type => 'application/xml') {
                xml.TopicDescription('xmlns' => 'http://schemas.microsoft.com/netservices/2010/10/servicebus/connect', 'xmlns:i' => 'http://www.w3.org/2001/XMLSchema-instance') {
                  PROPERTIES.each do |p|
                    if prop = @properties.fetch(p, nil)
                      xml.send(p, prop)
                    end
                  end
                }
              }
            }
          end
          doc.to_xml
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
azure-0.1.1 lib/azure/service_bus/topics/topic_serializer.rb
azure-0.1.0 lib/azure/service_bus/topics/topic_serializer.rb