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