Sha256: 537a83f00f5a18a5b272633521d39545190fe834567c371c819819498b2fae71

Contents?: true

Size: 1.04 KB

Versions: 5

Compression:

Stored size: 1.04 KB

Contents

module Awsrm
  class AlbListener < Awsrm::Resource
    FILTER_MAP = {
      id: 'listener_arn',
      arn: 'listener_arn',
      alb: ->(value) { { load_balancer_arn: Awsrm::Alb.one(name: value).load_balancer_arn } }
    }.freeze

    class << self
      def all(params)
        listeners = params.map do |key, value|
          raise UndefinedFilterParamError, key unless self::FILTER_MAP.key?(key)
          if self::FILTER_MAP[key].is_a?(Proc)
            next elbv2_client.describe_listeners(self::FILTER_MAP[key].call(value)).map do |responce|
              responce.listeners
            end.flatten
          end
          elbv2_client.describe_listeners(listener_arns: [value]).map do |responce|
            responce.listeners
          end.flatten
        end.flatten
        listeners.map do |listener|
          AlbListenerReader.new(listener)
        end
      end

      def filters(_params)
        raise NoMethodError
      end
    end
  end

  class AlbListenerReader < Awsrm::ResourceReader
    def id
      @resource.listener_arn
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
awsrm-0.7.0 lib/awsrm/resources/alb_listener.rb
awsrm-0.6.0 lib/awsrm/resources/alb_listener.rb
awsrm-0.5.2 lib/awsrm/resources/alb_listener.rb
awsrm-0.5.1 lib/awsrm/resources/alb_listener.rb
awsrm-0.5.0 lib/awsrm/resources/alb_listener.rb