class JPush::Http::Client
Constants
- DEFAULT_HEADERS
- DEFAULT_OPEN_TIMEOUT
- DEFAULT_READ_TIMEOUT
- DEFAULT_RETRY_TIMES
- DEFAULT_USER_AGENT
- HTTP_VERB_MAP
- RETRY_SLEEP_TIME
Public Class Methods
delete(jpush, url, params: nil, headers: {})
click to toggle source
# File lib/jpush/http/client.rb, line 24 def delete(jpush, url, params: nil, headers: {}) request(jpush, :delete, url, params: params, headers: headers) end
get(jpush, url, params: nil, headers: {})
click to toggle source
# File lib/jpush/http/client.rb, line 12 def get(jpush, url, params: nil, headers: {}) request(jpush, :get, url, params: params, headers: headers) end
new(jpush, method, url, params: nil, body: nil, headers: {}, opts: {})
click to toggle source
# File lib/jpush/http/client.rb, line 64 def initialize(jpush, method, url, params: nil, body: nil, headers: {}, opts: {}) method = method.downcase.to_sym @uri = URI(url) @uri.query = URI.encode_www_form(params) unless params.nil? @request = prepare_request(method, body, headers) @request.basic_auth(jpush.app_key, jpush.master_secret) @opts = opts end
post(jpush, url, body: , headers: {})
click to toggle source
# File lib/jpush/http/client.rb, line 16 def post(jpush, url, body: , headers: {}) request(jpush, :post, url, body: body, headers: headers) end
put(jpush, url, body: , headers: {})
click to toggle source
# File lib/jpush/http/client.rb, line 20 def put(jpush, url, body: , headers: {}) request(jpush, :put, url, body: body, headers: headers) end
request(jpush, method, url, params: nil, body: nil, headers: {}, opts: {})
click to toggle source
# File lib/jpush/http/client.rb, line 28 def request(jpush, method, url, params: nil, body: nil, headers: {}, opts: {}) raw_response = self.new( jpush, method, url, params: params, body: body, headers: headers, opts: opts ).send_request Response.new(raw_response) end
Public Instance Methods
send_request()
click to toggle source
# File lib/jpush/http/client.rb, line 73 def send_request tries ||= DEFAULT_RETRY_TIMES opts ||= { use_ssl: 'https' == @uri.scheme, open_timeout: DEFAULT_OPEN_TIMEOUT, read_timeout: DEFAULT_READ_TIMEOUT }.merge @opts Net::HTTP.start(@uri.host, @uri.port, opts) do |http| http.request(@request) end # if raise Timeout::Error retry it for 3 times rescue Net::OpenTimeout, Net::ReadTimeout => e (tries -= 1).zero? ? (raise Utils::Exceptions::TimeOutError.new(e)) : retry end
Private Instance Methods
prepare_request(method, body, headers)
click to toggle source
# File lib/jpush/http/client.rb, line 90 def prepare_request(method, body, headers) headers = DEFAULT_HEADERS.merge(headers) request = HTTP_VERB_MAP[method].new @uri request.initialize_http_header(headers) request.body = body.to_json unless body.nil? request end