class SimpleGsx::Client

Constants

API_BASE
API_VERSION
AUTH_URL
CANCEL_ORDER_URL
CREATE_ORDER_URL
LOOKUP_URL
VERIFY_ORDER_URL

Attributes

cert_file[R]
lang_code[R]
password[R]
ship_to[R]
time_zone[R]
user_id[R]

Public Class Methods

new(options) click to toggle source
# File lib/simple_gsx.rb, line 20
def initialize options
  @user_id = options.fetch :user_id
  @password = options.fetch :password
  @ship_to = options.fetch :ship_to
  @cert_file = options.fetch :cert_file

  # Options
  @lang_code = options[:lang_code] || 'zh'
  @time_zone = options[:time_zone] || '-480'
end

Public Instance Methods

cancel_order(options) click to toggle source

See: gsxwsut.apple.com/apidocs/acc/uat/html/WSReference.html?user=reseller Section: Order/CancelOrder

# File lib/simple_gsx.rb, line 57
def cancel_order options
  body = {
    deviceId: options[:device_id],
    purchaseOrderNumber: options[:purchase_order_number],
    cancellationDate: options[:cancel_date].strftime('%y-%m-%d'),
    cancelReasonCode: options[:cancel_reason_code] || "",
    requestContext: request_context
  }

  api_request CANCEL_ORDER_URL, body
end
create_order(options) click to toggle source

See: gsxwsut.apple.com/apidocs/acc/uat/html/WSReference.html?user=reseller Section: Order/CreateOrder

# File lib/simple_gsx.rb, line 35
def create_order options
  body = {
    requestContext: request_context,
    appleCareSalesDate: options[:purchase_date].strftime('%y-%m-%d'),
    pocLanguage: 'ZHS',
    pocDeliveryPreference: 'E',
    purchaseOrderNumber: options[:purchase_order_number],
    MRC: '',
    marketID: '',
    overridePocFlag: '',
    emailFlag: 'Y',
    customerRequest: customer_request(options),
    deviceRequest: [device_request(options)]
  }

  api_request CREATE_ORDER_URL, body
end
order_lookup(options) click to toggle source

See: gsxwsut.apple.com/apidocs/acc/uat/html/WSReference.html?user=reseller Section: 360 Look Up

# File lib/simple_gsx.rb, line 95
def order_lookup options
  body = {
    requestContext: request_context,
    deviceId: options[:device_id],
    purchaseOrderNumber: options[:purchase_order_number] || "",
    customerEmailId: options[:customer_email_id] || ""
  }

  api_request LOOKUP_URL, body
end
verify_order(options) click to toggle source

See: gsxwsut.apple.com/apidocs/acc/uat/html/WSReference.html?user=reseller Section: Order/VerifyOrder

# File lib/simple_gsx.rb, line 73
def verify_order options
  body = {
    requestContext: request_context,
    appleCareSalesDate: "",
    pocLanguage: "ZHS",
    pocDeliveryPreference: "",
    purchaseOrderNumber: "",
    MRC: "",
    marketID: "",
    overridePocFlag: "",
    emailFlag: "Y",
    customerRequest: customer_request(options),
    deviceRequest: [device_request(options)]
  }

  api_request VERIFY_ORDER_URL, body
end

Private Instance Methods

access_token() click to toggle source
# File lib/simple_gsx.rb, line 144
def access_token
  @access_token ||= begin
                      body = {
                        userId: user_id,
                        password: password,
                        shipTo: ship_to,
                        langCode: lang_code,
                        timeZone: time_zone
                      }

                      response = api_request AUTH_URL, body
                      response[:accessToken]
                    end
end
api_request(url, body) click to toggle source
# File lib/simple_gsx.rb, line 159
def api_request url, body
  response = RestClient::Resource.new(
    url,
    :ssl_client_cert  =>  OpenSSL::X509::Certificate.new(File.read(cert_file)),
    :ssl_client_key   =>  OpenSSL::PKey::RSA.new(File.read(cert_file), ''),
    :ssl_ca_file      =>  cert_file,
    :verify_ssl       =>  false
  ).post JSON.dump(body), headers

  json response
end
customer_request(options) click to toggle source
# File lib/simple_gsx.rb, line 120
def customer_request options
  {
    customerFirstName: options[:customer_first_name] || "",
    customerLastName: options[:customer_last_name] || "",
    companyName: "",
    customerEmailId: options[:customer_email],
    addressLine1: options[:customer_address],
    addressLine2: "",
    city: "",
    stateCode: "230",
    countryCode: "CN",
    primaryPhoneNumber: options[:customer_mobile_number],
    zipCode: options[:customer_zip_code]
  }
end
device_request(options) click to toggle source
# File lib/simple_gsx.rb, line 136
def device_request options
  {
    deviceId: options[:device_id],
    secondarySerialNumber: options[:secondary_device_id] || "",
    hardwareDateOfPurchase: options[:date_of_purchase] || "" #"09/11/13"
  }
end
headers() click to toggle source
# File lib/simple_gsx.rb, line 112
def headers
  { accAccessToken: access_token, :'content-type' => 'application/json' }
end
json(json_string) click to toggle source
# File lib/simple_gsx.rb, line 108
def json json_string
  JSON.parse json_string, symbolize_names: true
end
request_context() click to toggle source
# File lib/simple_gsx.rb, line 116
def request_context
  { shipTo: ship_to, timeZone: time_zone, langCode: lang_code }
end