module AppleDEPClient::Auth

Constants

OAUTH_PATH

Apple requires a quirky OAuth 1.0a authentication to get a temporary X-ADM-Auth-Session key to make requests; this takes care of that

Public Class Methods

get_session_token() click to toggle source
# File lib/apple_dep_client/auth.rb, line 16
def self.get_session_token
  options = { method: :get, headers: AppleDEPClient::Request::DEFAULT_HEADERS }
  request = Typhoeus::Request.new(AppleDEPClient::Request.make_url(OAUTH_PATH), options)
  request.options[:headers].merge!({ "Authorization" => oauth_header(request) })
  request.run
  response = request.response
  AppleDEPClient::Error.check_request_error(response, auth: true)
  parse_response response
end
oauth_header(request) click to toggle source
# File lib/apple_dep_client/auth.rb, line 26
def self.oauth_header(request)
  consumer = OAuth::Consumer.new(
    AppleDEPClient.consumer_key,
    AppleDEPClient.consumer_secret,
    site: AppleDEPClient::Request.make_url(OAUTH_PATH),
  )
  token = OAuth::AccessToken.new(
    consumer,
    AppleDEPClient.access_token,
    AppleDEPClient.access_secret,
  )
  oauth_params = {
    consumer: consumer,
    realm: "ADM",
    token: token,
  }
  oauth_helper = OAuth::Client::Helper.new request, oauth_params.merge(request_uri: AppleDEPClient::Request.make_url(OAUTH_PATH))
  oauth_helper.header
end
parse_response(response) click to toggle source
# File lib/apple_dep_client/auth.rb, line 46
def self.parse_response(response)
  body = JSON.parse response.response_body
  auth_session_token = body["auth_session_token"]
end