Class: Google::Ads::GoogleAds::Interceptors::ErrorInterceptor
- Inherits:
 - 
      GRPC::ClientInterceptor
      
        
- Object
 - GRPC::ClientInterceptor
 - Google::Ads::GoogleAds::Interceptors::ErrorInterceptor
 
 
- Defined in:
 - lib/google/ads/google_ads/interceptors/error_interceptor.rb
 
Constant Summary collapse
- ERROR_TRANSFORMER =
 lambda do |gax_error| begin gax_error.status_details.each do |detail| # If there is an underlying GoogleAdsFailure, throw that one. if detail.class.name.start_with?("Google::Ads::GoogleAds") && detail.class.name.end_with?("GoogleAdsFailure") return Google::Ads::GoogleAds::Errors::GoogleAdsError.new( detail ) elsif detail.is_a?(Google::Protobuf::Any) type = Google::Protobuf::DescriptorPool.generated_pool.lookup( detail.type_name ).msgclass failure = detail.unpack(type) return Google::Ads::GoogleAds::Errors::GoogleAdsError.new( failure ) end end rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e return e rescue NoMethodError # Sometimes status_details is just a String; in that case, we should # just raise the original exception. end # If we don't find an error of the correct type, or if we run into an # error while processing, just throw the original. gax_error end
Instance Method Summary collapse
- 
  
    
      #initialize  ⇒ ErrorInterceptor 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of ErrorInterceptor.
 - #request_response(request:, call:, method:, metadata: {}) ⇒ Object
 - #server_streamer(request:, call:, method:, metadata: {}) ⇒ Object
 
Constructor Details
#initialize ⇒ ErrorInterceptor
Returns a new instance of ErrorInterceptor.
      57 58 59 60 61  | 
    
      # File 'lib/google/ads/google_ads/interceptors/error_interceptor.rb', line 57 def initialize() # Don't propagate args, parens are necessary super() @error_transformer = ERROR_TRANSFORMER end  | 
  
Instance Method Details
#request_response(request:, call:, method:, metadata: {}) ⇒ Object
      63 64 65 66 67 68 69  | 
    
      # File 'lib/google/ads/google_ads/interceptors/error_interceptor.rb', line 63 def request_response(request:, call:, method:, metadata: {}) begin yield rescue Exception => e raise @error_transformer.call(e) end end  | 
  
#server_streamer(request:, call:, method:, metadata: {}) ⇒ Object
      71 72 73 74 75 76 77 78  | 
    
      # File 'lib/google/ads/google_ads/interceptors/error_interceptor.rb', line 71 def server_streamer(request:, call:, method:, metadata: {}) responses = yield Enumerator.new do |y| responses.each { |response| y << response } rescue BasicObject => e raise @error_transformer.call(e) end end  |