fog/fog-terremark

View on GitHub
lib/fog/parsers/terremark/internet_service.rb

Summary

Maintainability
A
2 hrs
Test Coverage
module Fog
  module Parsers
    module Terremark
      class InternetService < Base
        def reset
          @in_public_ip_address = false
          @response = { "PublicIpAddress" => {} }
        end

        def start_element(name, attributes)
          super
          case name
          when "Href"
            data = extract_attributes(attributes)
            if @in_public_ip_address
              @response["PublicIpAddress"][name] = data
            else
              @response[name] = data
            end
          when "PublicIpAddress"
            @in_public_ip_address = true
          end
        end

        def end_element(name)
          case name
          when "Description", "Protocol"
            @response[name] = value
          when "Enabled"
            if value == "false"
              @response[name] = false
            else
              @response[name] = true
            end
          when "Id"
            if @in_public_ip_address
              @response["PublicIpAddress"][name] = value.to_i
            else
              @response[name] = value.to_i
            end
          when "Name"
            if @in_public_ip_address
              @response["PublicIpAddress"][name] = value
            else
              @response[name] = value
            end
          when "Port", "Timeout"
            @response[name] = value.to_i
          when "PublicIpAddress"
            @in_public_ip_address = false
          end
        end
      end
    end
  end
end