mirror of
https://github.com/zhigang1992/fir-cli.git
synced 2026-04-29 18:15:02 +08:00
Refactor FIR::Http
This commit is contained in:
@@ -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'
|
||||
|
||||
9
lib/fir/patches/default_headers.rb
Normal file
9
lib/fir/patches/default_headers.rb
Normal 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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user