Refactor FIR::Http

This commit is contained in:
NaixSpirit
2016-05-27 18:36:33 +08:00
parent c4af239460
commit e3dfa05e86
3 changed files with 30 additions and 52 deletions

View File

@@ -7,3 +7,4 @@ require_relative './patches/instance_variables'
require_relative './patches/native_patch'
require_relative './patches/os_patch'
require_relative './patches/try'
require_relative './patches/default_headers'

View File

@@ -0,0 +1,9 @@
# encoding: utf-8
module RestClient
class Request
def default_headers
{ content_type: :json, source: 'fir-cli', version: FIR::VERSION }
end
end
end

View File

@@ -2,61 +2,29 @@
module FIR
module Http
DEFAULT_TIMEOUT = 300
MAX_RETRIES = 5
def get(url, params = {})
tries = 5
begin
res = ::RestClient::Request.execute(
method: :get,
url: url,
timeout: DEFAULT_TIMEOUT,
headers: default_headers.merge(params: params)
)
rescue => e
logger.error e.message.to_s
if tries > 0
logger.info "Retry in #{tries} times......"
tries -= 1
retry
else
exit 1
end
end
JSON.parse(res.body.force_encoding('UTF-8'), symbolize_names: true)
end
%w(post patch put).each do |method|
define_method method do |url, query|
tries = 5
begin
res = ::RestClient::Request.execute(
method: method.to_sym,
url: url,
payload: query,
timeout: DEFAULT_TIMEOUT,
headers: default_headers
)
rescue => e
logger.error e.message.to_s
if tries > 0
logger.info "Retry in #{tries} times......"
tries -= 1
retry
else
exit 1
%w(get post patch put).each do |_m|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
def #{_m}(url, params = {})
query = :#{_m} == :get ? { params: params } : params
begin
res = ::RestClient.#{_m}(url, query)
rescue => e
@retries ||= 0
logger.error(e.message.to_s)
if @retries < MAX_RETRIES
@retries += 1
logger.info("Retry \#{@retries} times......")
sleep 2
retry
else
exit 1
end
end
JSON.parse(res.body.force_encoding('UTF-8'), symbolize_names: true)
end
JSON.parse(res.body.force_encoding('UTF-8'), symbolize_names: true)
end
end
private
def default_headers
{ content_type: :json, source: 'fir-cli', version: FIR::VERSION }
METHOD
end
end
end