class Lazop::LazopClient

Public Class Methods

new(serverUrl,appkey,appSecret) click to toggle source
# File lib/LazopClient.rb, line 15
def initialize(serverUrl,appkey,appSecret)
    @serverUrl,@appkey,@appSecret = serverUrl,appkey,appSecret
end

Public Instance Methods

execute(request,accessToken = nil) click to toggle source
# File lib/LazopClient.rb, line 19
def execute(request,accessToken = nil)
    
    sys_params = Hash.new
    sys_params[:app_key] = @appkey

    timestamp = request.timestamp
    if timestamp == nil
        timestamp = (Time.now.to_f * 1000).to_i
    end
    sys_params[:timestamp] = timestamp

    sys_params[:sign_method] = 'hmac'

    if accessToken != nil
        sys_params[:access_token] = accessToken
    end

    sys_params[:sign] = sign_api_request(sys_params,request.api_params)

    rpcUrl = get_rest_url(@serverUrl,request.api_name)
    fullUrl = get_full_url(rpcUrl,sys_params)

    obj = nil
    if request.file_params.size() > 0 || request.http_method == 'POST'
        obj = perform_post(fullUrl,request.api_params,request.file_params,request.header_params)
    else
        obj = perform_get(fullUrl,request.api_params,request.header_params)
    end

    puts obj
    return Lazop::LazopResponse.new(obj['type'],obj['code'],obj['message'],obj['request_id'],obj)
end
get_full_url(url,params) click to toggle source
# File lib/LazopClient.rb, line 118
def get_full_url(url,params)
    
    full_url = url
    param_str = ''

    params.each do |k,v|
        if param_str.length() > 0
            param_str += '&'
        end
        param_str += k.to_s()
        param_str += '='
        param_str += v.to_s()
    end

    full_url += '?'
    full_url += param_str

    return full_url
end
get_rest_url(url,api_name) click to toggle source
# File lib/LazopClient.rb, line 109
def get_rest_url(url,api_name)
    length = url.length()
    if url[length -1] == '/'
    return url + api_name.index('/');
    end

    return url + api_name;
end
perform_get(url,api_params,header_params) click to toggle source
# File lib/LazopClient.rb, line 52
def perform_get url,api_params,header_params

    param_str = ''

    if api_params != nil 
        api_params.each do |k,v|
            param_str += '&'
            param_str += k.to_s()
            param_str += '='
            param_str += v.to_s()
        end    
    end

    puts url + param_str

    res = JSON.parse(RestClient.get(url + param_str, header_params))

    return res
            
end
perform_post(url, api_params,file_params,header_params) click to toggle source
# File lib/LazopClient.rb, line 73
def perform_post url, api_params,file_params,header_params

    all_params = api_params

    if file_params != nil
        file_params.each do |k,v|
            all_params[k] = File.open(v, "rb")  
        end    
    end

    res = JSON.parse(RestClient.post(url,all_params))
    return res
end
sign_api_request(sys_params,api_params) click to toggle source
# File lib/LazopClient.rb, line 87
def sign_api_request(sys_params,api_params)
    sort_arrays = nil

    if api_params != nil
        sort_arrays = sys_params.merge(api_params).sort_by do |k,v|  
            k.to_s()
        end
    else
        sort_arrays = sys_params.sort_by do |k,v|  
            k
        end                
    end

    sign_str = ''
    sort_arrays.each do |k,v|
        sign_str += k.to_s()
        sign_str += v.to_s()
    end
    
    return OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('md5'), @appSecret, sign_str).upcase
end