From eef065db32937e68b5d65fd6783a2e52228cea84 Mon Sep 17 00:00:00 2001 From: lifeng Date: Fri, 24 Jul 2020 22:57:45 +0800 Subject: [PATCH] add timeout --- lib/aliyunsdkcore/roa_client.rb | 12 +++++++++--- spec/roa_client_integration_spec.rb | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/aliyunsdkcore/roa_client.rb b/lib/aliyunsdkcore/roa_client.rb index 56555cb..eabb0a9 100644 --- a/lib/aliyunsdkcore/roa_client.rb +++ b/lib/aliyunsdkcore/roa_client.rb @@ -26,10 +26,16 @@ def request(method:, uri:, params: {}, body: {}, headers: {}, options: {}) response = connection.send(method.downcase) do |request| request.url uri, params - if body - if mix_headers['content-type'].start_with? 'application/json' + + request.options.timeout = options[:timeout] if options[:timeout] + request.options.open_timeout = options[:open_timeout] if options[:open_timeout] + request.options.read_timeout = options[:read_timeout] if options[:read_timeout] + request.options.write_timeout = options[:write_timeout] if options[:write_timeout] + + if !body.nil? && body != {} && body != [] && body != '' + if mix_headers['content-type'].to_s.start_with? 'application/json' request_body = body.to_json - elsif mix_headers['content-type'].start_with? 'application/x-www-form-urlencoded' + elsif mix_headers['content-type'].to_s.start_with? 'application/x-www-form-urlencoded' request_body = URI.encode_www_form(body) else request_body = body diff --git a/spec/roa_client_integration_spec.rb b/spec/roa_client_integration_spec.rb index 4c96bf7..57ff3f5 100644 --- a/spec/roa_client_integration_spec.rb +++ b/spec/roa_client_integration_spec.rb @@ -32,4 +32,9 @@ expect(response.body.instance_of? String).to be true end + it 'support timeout' do + expect { + roa_client.request(method: 'GET', uri: '/regions', options: { timeout: 0.002, open_timeout: 0.002 }) + }.to raise_error(Faraday::ConnectionFailed) + end end