class LazopApiClient::Client

Public Class Methods

new(serverUrl,appkey,appSecret) click to toggle source
# File lib/lazop_api_client.rb, line 48
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/lazop_api_client.rb, line 52
def execute(request,accessToken = nil)
    
    sys_params = Hash.new
    sys_params[:app_key] = @appkey
    sys_params[:partner_id] = 'lazop-sdk-ruby-20180426'

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

    sys_params[:sign_method] = 'sha256'

    if @logLevel == Constants::Log_level_debug
        sys_params[:debug] = 'true'
    end

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

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

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

    obj = nil
    begin
        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
    rescue Exception => e
        logApiError(fullUrl, "HTTP_ERROR", e.message)
        raise
    end

    if obj['code'] != nil and obj['code'] != '0'
        logApiError(fullUrl, obj['code'], obj['message'])
    else
        if @logLevel == Constants::Log_level_debug or @logLevel == Constants::Log_level_info
            logApiError(fullUrl, '', '')
        end
    end
        
    return LazopApiClient::Response.new(obj['type'],obj['code'],obj['message'],obj['request_id'],obj)
end
get_full_url(url,params) click to toggle source
# File lib/lazop_api_client.rb, line 180
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/lazop_api_client.rb, line 171
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
logApiError(requestUrl, code, message) click to toggle source
# File lib/lazop_api_client.rb, line 129
def logApiError requestUrl, code, message
    localIp = IPSocket.getaddress(Socket.gethostname)
    $logger.error localIp + '^_^' + requestUrl + '^_^' + code + '^_^' + message
end
perform_get(url,api_params,header_params) click to toggle source
# File lib/lazop_api_client.rb, line 102
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 += CGI.escape(v.to_s())
        end    
    end

    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/lazop_api_client.rb, line 134
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
setLogLevel(level) click to toggle source
# File lib/lazop_api_client.rb, line 121
def setLogLevel(level)
    @logLevel = level
end
sign_api_request(sys_params,api_params,api_name) click to toggle source
# File lib/lazop_api_client.rb, line 148
def sign_api_request(sys_params,api_params,api_name)
    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 = ''
    sign_str += api_name
    sort_arrays.each do |k,v|
        sign_str += k.to_s()
        sign_str += v.to_s()
    end
    
    return OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @appSecret, sign_str).upcase
end
url_encode(str) click to toggle source
# File lib/lazop_api_client.rb, line 125
def url_encode(str)
  return str.gsub!(/[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n) { |x| x = format("%%%x", x[0])}  
end