Class: StockShaker::Client::JDCentralOP
- Inherits:
-
Object
- Object
- StockShaker::Client::JDCentralOP
- Defined in:
- lib/stock_shaker/client/jd_central_op.rb
Instance Attribute Summary collapse
-
#app_secret ⇒ Object
readonly
Returns the value of attribute app_secret.
-
#common_params ⇒ Object
readonly
Returns the value of attribute common_params.
-
#server_url ⇒ Object
readonly
Returns the value of attribute server_url.
Class Method Summary collapse
-
.do_authorization_link ⇒ Object
TODO: May be JD Central issued this in the future.
Instance Method Summary collapse
- #do_signature(request_params) ⇒ Object
- #execute(request) ⇒ Object
-
#initialize(server_url, app_secret) ⇒ JDCentralOP
constructor
A new instance of JDCentralOP.
- #perform(request, request_params) ⇒ Object
- #validates! ⇒ Object
Constructor Details
#initialize(server_url, app_secret) ⇒ JDCentralOP
Returns a new instance of JDCentralOP.
12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
Instance Attribute Details
#app_secret ⇒ Object (readonly)
Returns the value of attribute app_secret.
10 11 12 |
# File 'lib/stock_shaker/client/jd_central_op.rb', line 10 def app_secret @app_secret end |
#common_params ⇒ Object (readonly)
Returns the value of attribute common_params.
10 11 12 |
# File 'lib/stock_shaker/client/jd_central_op.rb', line 10 def common_params @common_params end |
#server_url ⇒ Object (readonly)
Returns the value of attribute server_url.
10 11 12 |
# File 'lib/stock_shaker/client/jd_central_op.rb', line 10 def server_url @server_url end |
Class Method Details
.do_authorization_link ⇒ Object
TODO: May be JD Central issued this in the future
69 |
# File 'lib/stock_shaker/client/jd_central_op.rb', line 69 def self.; end |
Instance Method Details
#do_signature(request_params) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 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) ⇒ Object
25 26 27 28 29 30 31 32 |
# 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) ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# 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! ⇒ Object
63 64 65 66 |
# 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 |