Skip to content

Commit

Permalink
set timeout for http requests
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin91 committed Mar 10, 2018
1 parent ddcdb89 commit 6d6b269
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
7 changes: 6 additions & 1 deletion lib/rong_cloud/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@ module RongCloud
module Configuration
# The default host to accept connections, use a https protocol
DEFAULT_HOST = "https://api.cn.ronghub.com".freeze
DEFAULT_TIMEOUT = 2

module ModuleMethods
attr_accessor :app_key, :app_secret
attr_writer :host
attr_writer :host, :timeout

# Fetch the api host, the default is: https://api.cn.ronghub.com
#
def host
@host || DEFAULT_HOST
end

def timeout
@timeout || DEFAULT_TIMEOUT
end
end
extend ModuleMethods
end
Expand Down
6 changes: 5 additions & 1 deletion lib/rong_cloud/request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@ module Request
def request(path, params = nil, content_type = :form_data)
uri = get_uri(path)
req = initialize_request(uri, params, content_type)

use_ssl = uri.scheme == 'https'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: use_ssl) do |http|
timeout = RongCloud::Configuration.timeout
request_options = { use_ssl: use_ssl, open_timeout: timeout, read_timeout: timeout }

res = Net::HTTP.start(uri.hostname, uri.port, request_options) do |http|
http.request(req)
end

Expand Down
12 changes: 12 additions & 0 deletions test/rong_cloud/request_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,17 @@ def test_request_with_valid_params
assert_equal "user", response["userId"]
assert response["token"]
end

def test_request_with_timeout_set
original_timeout = RongCloud::Configuration.timeout
RongCloud::Configuration.timeout = 0.001

service = RongCloud::Service.new
assert_raises Net::OpenTimeout do
response = request("/user/getToken", { userId: 'user', name: "User", portraitUri: "uri" })
end

RongCloud::Configuration.timeout = original_timeout
end
end
end

0 comments on commit 6d6b269

Please sign in to comment.