class XboxLiveApi::Requests::ProfileRequest

Public Instance Methods

for(user_id) click to toggle source
# File lib/xbox_live_api/requests/profile_request.rb, line 9
def for(user_id)
  resp = make_request(user_id)
  handle_response(resp, user_id)
end

Private Instance Methods

collect_settings(settings) click to toggle source
# File lib/xbox_live_api/requests/profile_request.rb, line 39
def collect_settings(settings)
  settings_hash = {}
  settings.each do |setting|
    settings_hash.store(setting['id'], setting['value'])
  end
  settings_hash
end
handle_response(resp, user_id) click to toggle source
# File lib/xbox_live_api/requests/profile_request.rb, line 25
def handle_response(resp, user_id)
  json = Oj.load(resp)
  settings = json['profileUsers'].first['settings']
  settings_hash = collect_settings(settings)
  Profile.new(id: user_id,
              gamertag: settings_hash['Gamertag'],
              gamerscore: settings_hash['Gamerscore'].to_i,
              gamer_picture: settings_hash['GameDisplayPicRaw'],
              account_tier: settings_hash['AccountTier'],
              xbox_one_rep: settings_hash['XboxOneRep'],
              preferred_color_url: settings_hash['PreferredColor'],
              tenure_level: settings_hash['TenureLevel'].to_i)
end
make_request(user_id) click to toggle source
# File lib/xbox_live_api/requests/profile_request.rb, line 16
def make_request(user_id)
  url = 'https://profile.xboxlive.com/users/batch/profile/settings'
  params = {
      'settings' => %w(Gamerscore Gamertag GameDisplayPicRaw AccountTier XboxOneRep PreferredColor TenureLevel),
      'userIds' => [user_id]
  }
  HttpSessionGateway.new.post_json(url, header: header_for_version(Version::XBOX_ONE), body: params).body
end