class StockShaker::Client::ShopeeOP

Attributes

common_params[R]
rest_url[R]
server_url[R]

Public Class Methods

new(server_url, shop_id) click to toggle source
# File lib/stock_shaker/client/shopee_op.rb, line 16
def initialize(server_url, shop_id)
  @common_params = {
    shopid: shop_id.to_i,
    partner_id: StockShaker.config.shopee_config.partner_id.to_i,
    timestamp: DateTime.now.to_time.to_i
  }
  @server_url = server_url
  @rest_url = nil
  validates!
end

Public Instance Methods

do_signature(rest_url, request_params) click to toggle source
# File lib/stock_shaker/client/shopee_op.rb, line 39
def do_signature(rest_url, request_params)
  signature_base_string = "#{rest_url}|#{request_params}"
  OpenSSL::HMAC.hexdigest('SHA256', StockShaker.config.shopee_config.secret_key, signature_base_string)
end
execute(request) click to toggle source
# File lib/stock_shaker/client/shopee_op.rb, line 27
def execute(request)
  request_params = @common_params.merge(request.api_params).to_json
  @rest_url = "#{@server_url}#{request.api_name}"

  signature = do_signature(@rest_url, request_params)

  request.add_header_params('content-type', 'json')
  request.add_header_params('Authorization', signature)

  perform(@rest_url, request, request_params)
end
perform(url, request, request_params) click to toggle source
# File lib/stock_shaker/client/shopee_op.rb, line 44
def perform(url, request, request_params)
  RestClient::Request.execute(
    method: request.http_method,
    payload: request_params,
    url: url,
    headers: request.header_params
  )
rescue StandardError => err
  err
end
validates!() click to toggle source
# File lib/stock_shaker/client/shopee_op.rb, line 55
def validates!
  raise 'server_url is required' unless @server_url
end