lib/fog/aws/parsers/elbv2/describe_listeners.rb
module Fog
module Parsers
module AWS
module ELBV2
class DescribeListeners < Fog::Parsers::Base
def reset
reset_listener
@default_action = {}
@certificate = {}
@config = {}
@target_groups = []
@target_group = {}
@target_group_stickiness_config = {}
@results = { 'Listeners' => [] }
@response = { 'DescribeListenersResult' => {}, 'ResponseMetadata' => {} }
end
def reset_listener
@listener= { 'DefaultActions' => [], 'Certificates' => [] }
end
def start_element(name, attrs = [])
super
case name
when 'DefaultActions'
@in_default_actions = true
when 'Certificates'
@in_certificates = true
when 'TargetGroups'
@in_target_groups = true
when 'TargetGroupStickinessConfig'
@in_target_group_stickiness_config = true
end
end
def end_element(name)
if @in_default_actions
case name
when 'member'
if @in_target_groups
@target_groups << @target_group
@target_group = {}
else
@listener['DefaultActions'] << @default_action
@default_action = {}
end
when 'TargetGroupArn'
if @in_target_groups
@target_group[name] = value
else
@default_action[name] = value
end
when 'Weight'
@target_group[name] = value
when 'Type', 'Order'
@default_action[name] = value
when 'Path', 'Protocol', 'Port', 'Query', 'Host', 'StatusCode', 'ContentType',
'MessageBody', 'StatusCode'
@config[name] = value
when 'RedirectConfig', 'ForwardConfig', 'FixedResponseConfig'
@default_action[name] = @config
@config = {}
when 'DurationSeconds', 'Enabled'
@target_group_stickiness_config[name] = value
when 'DefaultActions'
@in_default_actions = false
when 'TargetGroupStickinessConfig'
if @in_target_group_stickiness_config
@config['TargetGroupStickinessConfig'] = @target_group_stickiness_config
@in_target_group_stickiness_config = false
@target_group_stickiness_config = {}
end
when 'TargetGroups'
@config['TargetGroups'] = @target_groups
@in_target_groups = false
@target_groups = []
end
else
case name
when 'member'
if @in_certificates
@listener['Certificates'] << @certificate
@certificate = {}
else
@results['Listeners'] << @listener
reset_listener
end
when 'LoadBalancerArn', 'Protocol', 'Port', 'ListenerArn', 'SslPolicy'
@listener[name] = value
when 'CertificateArn'
@certificate[name] = value
when 'Certificates'
@in_certificates = false
when 'RequestId'
@response['ResponseMetadata'][name] = value
when 'NextMarker'
@results['NextMarker'] = value
when 'DescribeListenersResponse'
@response['DescribeListenersResult'] = @results
end
end
end
end
end
end
end
end