Sha256: 77938379e00de8c96ec0ff4c9b002029d23019ed08b71940e3ea9227dcac6dce

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

require 'delegate'

module Google
  module Ads
    module GoogleAds
      class SearchStreamInterceptingFactory < SimpleDelegator
        def initialize(transformer, factory)
          @transformer = transformer
          @factory = factory

          super(@factory)
        end

        def google_ads
          GoogleAdsInterceptor.new(@transformer, super)
        end

        private

        class GoogleAdsInterceptor < SimpleDelegator
          def initialize(transformer, google_ads_service)
            @transformer = transformer
            @google_ads_service = google_ads_service

            super(@google_ads_service)
          end

          def search_stream(*args, &blk)
            res = super(*args)
            if !blk.nil?
              begin
                res.each(&blk)
                return res
              rescue BasicObject => e
                raise @transformer.call(e)
              end
            end

            Enumerator.new do |y|
              res.each { |item| y << item }
            rescue BasicObject => e
              raise @transformer.call(e)
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
google-ads-googleads-6.0.0 lib/google/ads/google_ads/search_stream_intercepting_factory.rb
google-ads-googleads-5.1.0 lib/google/ads/google_ads/search_stream_intercepting_factory.rb
google-ads-googleads-5.0.0 lib/google/ads/google_ads/search_stream_intercepting_factory.rb