class AppleVPP::Client

Attributes

s_token[RW]

Public Class Methods

new(s_token) click to toggle source
# File lib/apple_vpp/client.rb, line 9
def initialize(s_token)
  @s_token = s_token
  @url_service = UrlService.new
end

Public Instance Methods

associate_license_with_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 14
def associate_license_with_user(params = {})
  require_params [[:user_id, :client_user_id_str], [:adam_id, :license_id]], params

  body = {
    'userId'          => params[:user_id],
    'clientUserIdStr' => params[:client_user_id_str],
    'adamId'          => params[:adam_id],
    'licenseId'       => params[:license_id],
    'pricingParam'    => params[:pricing_param]
  }

  resp = request :associate_license_srv_url, body

  AppleSerializer.to_ruby [ resp['license'], resp['user'] ]
end
client_config(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 42
def client_config(params = {})
  body = {
    'clientContext' => params[:client_context],
    'apnToken'      => params[:apn_token]
  }

  resp = request :client_config_srv_url, body
  resp.delete('status')

  AppleSerializer.to_ruby resp
end
disassociate_license_from_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 30
def disassociate_license_from_user(params = {})
  require_params :license_id, params

  body = {
    'licenseId' => params[:license_id]
  }

  resp = request :disassociate_license_srv_url, body

  AppleSerializer.to_ruby [ resp['license'], resp['user'] ]
end
edit_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 54
def edit_user(params = {})
  require_params [[:user_id, :client_user_id_str]], params

  body = {
    'userId'          => params[:user_id],
    'clientUserIdStr' => params[:client_user_id_str],
    'email'           => params[:email]
  }

  resp = request :edit_user_srv_url, body

  AppleSerializer.to_ruby resp['user']
end
get_assets(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 68
def get_assets(params = {})
  body = {
    'includeLicenseCounts' => params[:include_license_counts]
  }

  resp = request :get_vpp_assets_srv_url, body

  AppleSerializer.to_ruby resp['assets']
end
get_licenses(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 78
def get_licenses(params = {})
  licenses = []
  batch_token = nil
  since_modified_token = nil

  begin

    body = {
      'batchToken'          => batch_token,
      'sinceModifiedToken'  => params[:since_modified_token],
      'adamId'              => params[:adam_id],
      'pricingParam'        => params[:pricing_param]
    }

    resp = request :get_licenses_srv_url, body

    licenses.concat( resp['licenses'] ) if resp['licenses']

    batch_token = resp['batchToken']
    since_modified_token = resp['sinceModifiedToken']

  end while batch_token

  {
    licenses:             AppleSerializer.to_ruby(licenses),
    since_modified_token: since_modified_token
  }
end
get_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 107
def get_user(params = {})
  require_params [[:user_id, :client_user_id_str]], params

  body = {
    'userId'          => params[:user_id],
    'clientUserIdStr' => params[:client_user_id_str],
    'itsIdHash'       => params[:its_id_hash]
  }

  resp = request :get_user_srv_url, body

  AppleSerializer.to_ruby resp['user']
end
get_users(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 175
def get_users(params = {})
  users = []
  batch_token = nil
  since_modified_token = nil

  begin

    body = {
      'batchToken'          => batch_token,
      'sinceModifiedToken'  => params[:since_modified_token],
      'includeRetired'      => params[:include_retired] ? 1 : nil
    }

    resp = request :get_users_srv_url, body

    users.concat( resp['users'] ) if resp['users']

    batch_token = resp['batchToken']
    since_modified_token = resp['sinceModifiedToken']

  end while batch_token

  {
    users:                AppleSerializer.to_ruby(users),
    since_modified_token: since_modified_token
  }
end
manage_licenses_by_adam_id(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 121
def manage_licenses_by_adam_id(params = {})
  require_params [:adam_id_str, :pricing_param], params

  unless params.has_key?(:associate_client_user_id_strs) ^
         params.has_key?(:associate_serial_numbers) ^
         params.has_key?(:disassociate_client_user_id_strs) ^
         params.has_key?(:disassociate_license_id_strs)
    raise ArgumentError, 'One and only one of these parameters may be provided: associate_client_user_id_strs, associate_serial_numbers, disassociate_client_user_id_strs, disassociate_license_id_strs.'
  end

  body = {
    'adamIdStr'                    => params[:adam_id_str],
    'associateClientUserIdStrs'    => params[:associate_client_user_id_strs],
    'associateSerialNumbers'       => params[:associate_serial_numbers],
    'disassociateClientUserIdStrs' => params[:disassociate_client_user_id_strs],
    'disassociateLicenseIdStrs'    => params[:disassociate_license_id_strs],
    'pricingParam'                 => params[:pricing_param],
    'notifyDisassociation'         => params[:notify_disassociation]
  }

  resp = request :manage_vpp_licenses_by_adam_id_srv_url, body

  ret = AppleSerializer.to_ruby resp
  ret.delete(:status)

  ret
end
register_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 149
def register_user(params = {})
  require_params :client_user_id_str, params

  body = {
    'clientUserIdStr' => params[:client_user_id_str],
    'email'           => params[:email]
  }

  resp = request :register_user_srv_url, body

  AppleSerializer.to_ruby resp['user']
end
retire_user(params = {}) click to toggle source
# File lib/apple_vpp/client.rb, line 162
def retire_user(params = {})
  require_params [[:user_id, :client_user_id_str]], params

  body = {
    'userId'          => params[:user_id],
    'clientUserIdStr' => params[:client_user_id_str]
  }

  resp = request :retire_user_srv_url, body

  AppleSerializer.to_ruby resp['user']
end

Private Instance Methods

request(url_service_url, body) click to toggle source
# File lib/apple_vpp/client.rb, line 227
def request url_service_url, body
  @url_service.refresh unless @url_service.ready?

  url = @url_service.send( url_service_url )

  Request.submit url, @s_token, body
end
require_params(param_name_array, params) click to toggle source

param_name_array is an array of required parameters. Include a sub-array of parameters for || requirement.

# File lib/apple_vpp/client.rb, line 207
def require_params param_name_array, params
  param_name_array = [param_name_array] unless param_name_array.kind_of? Array

  param_name_array.each do |param_names|
    param_names = [param_names] unless param_names.kind_of?(Array)

    param_found = false
    param_names.each do |param_name|
      if params[param_name]
        param_found = true
        break
      end
    end

    unless param_found
      raise ArgumentError, "#{param_names.join(' or ')} must be provided"
    end
  end
end