class StockShaker::Client::JDCentralOP
Attributes
app_secret[R]
common_params[R]
server_url[R]
Public Class Methods
new(server_url, app_secret)
click to toggle source
# File lib/stock_shaker/client/jd_central_op.rb, line 12 def initialize(server_url, app_secret) @common_params = { timestamp: DateTime.now.strftime('%F %T.%L%z'), format: 'json', v: '1.0' } @server_url = server_url @app_secret = app_secret validates! end
Public Instance Methods
do_signature(request_params)
click to toggle source
# File lib/stock_shaker/client/jd_central_op.rb, line 34 def do_signature(request_params) # Sort key by ASCII rule sorted_params = request_params.sort_by { |key, _value| key } # Create sign_base_string sign_base_string = @app_secret sorted_params.each { |key, value| sign_base_string += "#{key}#{value}" } sign_base_string += @app_secret # Conditional sign by sign_method if request_params[:sign_method].include?('hmac') digest = OpenSSL::Digest.new('sha256') OpenSSL::HMAC.hexdigest(digest, @app_secret, sign_base_string).upcase else Digest::MD5.hexdigest(sign_base_string).upcase end end
execute(request)
click to toggle source
# File lib/stock_shaker/client/jd_central_op.rb, line 25 def execute(request) request_params = @common_params.merge(**request.api_params, **request.business_params) request_params[:sign] = do_signature(request_params) request.add_header_params('charset', 'utf-8') perform(request, request_params.as_json) end
perform(request, request_params)
click to toggle source
# File lib/stock_shaker/client/jd_central_op.rb, line 52 def perform(request, request_params) RestClient::Request.execute( method: request.http_method, payload: request_params, url: @server_url, headers: request.header_params ) rescue StandardError => err err end
validates!()
click to toggle source
# File lib/stock_shaker/client/jd_central_op.rb, line 63 def validates! raise 'server_url is required' unless @server_url raise 'app_secret is required' unless @app_secret end