Sha256: b4b9405778eb18e6d08f545f81bbbfea84f4bbeccfa9d4a6556949a219c2ec76

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

module Inforouter #:nodoc:
  module Responses #:nodoc:
    # Returns the list of sub folders in the specified path in short form.
    #
    # http://www.inforouter.com/web-services-80/default.aspx?op=GetFolders1
    class Folders < Base
      response_success 'get_folders1_response/get_folders1_result/response/@success'
      error_message 'get_folders1_response/get_folders1_result/response/@error'

      class << self
        # Parse an infoRouter response.
        #
        # @param savon_response [Savon::Response] SOAP response.
        #
        # @return [Array<Inforouter::Folder>]
        def parse(savon_response)
          response = new(savon_response)
          data = response.match('get_folders1_response/get_folders1_result/response')
          return [] if data[:@itemcount].to_i == 0
          # Single folder returned as a Hash.
          data[:f] = [data[:f]] if data[:f].is_a?(Hash)
          data[:f].map do |folder|
            Inforouter::Folder.new(
              id: folder[:@id].to_i,
              name: folder[:@n].strip
            )
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
inforouter-0.3.0 lib/inforouter/responses/folders.rb
inforouter-0.2.9 lib/inforouter/responses/folders.rb