code: def request(*args, &block)
        raise ArgumentError, "GoogleAdsSavon::Client#request requires at least one argument" if args.empty?
  
        options = extract_options(args)
  
        request_builder = SOAP::RequestBuilder.new(options.delete(:input), options)
        request_builder.wsdl = wsdl
        request_builder.http = http.dup
        request_builder.wsse = wsse.dup
        request_builder.config = config.dup
  
        post_configuration = lambda { process(0, request_builder, &block) if block }
  
        response = request_builder.request(&post_configuration).response
        http.set_cookies(response.http)
  
        if wsse.verify_response
          WSSE::VerifySignature.new(response.http.body).verify!
        end
  
        response
      end
docs: Executes a SOAP request for a given SOAP action. Accepts a +block+ which is evaluated in the
   context of the <tt>SOAP::RequestBuilder</tt> object to let you access its +soap+, +wsdl+,
   +http+ and +wsse+ methods.
  
   == Examples
  
     # Calls a "getUser" SOAP action with the payload of "<userId>123</userId>"
     client.request(:get_user) { soap.body = { :user_id => 123 } }
  
     # Prefixes the SOAP input tag with a given namespace: "<wsdl:GetUser>...</wsdl:GetUser>"
     client.request(:wsdl, "GetUser") { soap.body = { :user_id => 123 } }
  
     # SOAP input tag with attributes: <getUser xmlns:wsdl="http://example.com">...</getUser>"
     client.request(:get_user, "xmlns:wsdl" => "http://example.com")