class RongCloudIM::Service

Constants

API_HOST

Public Class Methods

get_response(data, path) click to toggle source
# File lib/rong_cloud_im/service.rb, line 7
def get_response(data, path)
  uri = URI(API_HOST + path + "." + response_type)

  http = Net::HTTP.new(uri.host, uri.port)

  request = Net::HTTP::Post.new(uri.path)
  
  headers.each do |key, value|
    request.add_field(key, value)
  end
  
  request.set_form_data(data)
  response = http.request(request)

  result response.body
end

Private Class Methods

headers() click to toggle source
# File lib/rong_cloud_im/service.rb, line 30
def headers
  nonce = Random.new_seed.to_s
  timestamp = Time.now.to_i.to_s
  app_secret = RongCloudIM.app_secret || ""
  signature = sign(app_secret + nonce + timestamp)
  {
    'RC-App-Key'   => RongCloudIM.app_key || "",
    'RC-Nonce'     => nonce,
    'RC-Timestamp' => timestamp,
    'RC-Signature' => signature
  }
end
response_type() click to toggle source
# File lib/rong_cloud_im/service.rb, line 43
def response_type
  RongCloudIM.response_type || 'json'
end
result(body) click to toggle source
# File lib/rong_cloud_im/service.rb, line 47
def result body
  begin
    JSON.parse body
  rescue => e
    {
      code: 502,
      msg: "内容解析错误",
      detail: e.to_s
    }
  end
end
sign(data) click to toggle source
# File lib/rong_cloud_im/service.rb, line 26
def sign(data)
  OpenSSL::Digest::SHA1.new(data).to_s
end