add covenant

This commit is contained in:
2021-05-30 17:49:54 +02:00
parent d0e5824d40
commit 5b3da08707
29 changed files with 157 additions and 9 deletions

View File

@@ -24,6 +24,8 @@ class WowCharacterDetailWorker < WowSidekiqWorker
wow_character.wow_guild = find_or_create_wow_guild(result.guild) if result.guild
wow_character.save
update_covenant_progress(wow_character, result.covenant_progress) if result.covenant_progress
end
def find_or_create_wow_guild(guild)
@@ -36,4 +38,13 @@ class WowCharacterDetailWorker < WowSidekiqWorker
wow_guild.persisted? ? wow_guild : nil
end
def update_covenant_progress(wow_character, covenant_progress)
wow_covenant_progress = wow_character.wow_covenant_progress || WowCovenantProgress.new(wow_character: wow_character)
wow_covenant_progress.renown_level = covenant_progress.renown_level
wow_covenant_progress.wow_covenant = WowCovenant.find_by(covenant_id: covenant_progress.chosen_covenant.id)
wow_covenant_progress.save
end
end

View File

@@ -23,7 +23,7 @@ class WowCharactersWorker < WowSidekiqWorker
wow_char.wow_class = WowClass.where(class_id: character.playable_class.id).first
wow_char.wow_race = WowRace.where(race_id: character.playable_race.id).first
wow_char.user = user
wow_char.account_id = account.map_id
wow_char.account_id = account.id
locales.each do |locale|
Mobility.with_locale(locale[0]) do

View File

@@ -0,0 +1,23 @@
# frozen_string_literal: true
class WowCovenantDetailWorker < WowSidekiqWorker
def perform(covenant_id)
return unless (wow_covenant = WowCovenant.find_by(covenant_id: covenant_id))
RBattlenet.set_options(locale: 'all')
result = RBattlenet::Wow::Covenant.find(covenant_id)
return unless result.status_code == 200
wow_covenant.media_id = result.media.id
# Localisation data
locales.each do |locale|
Mobility.with_locale(locale[0]) do
wow_covenant.description = result.description[locale[1]]
end
end
wow_covenant.save
end
end

View File

@@ -0,0 +1,24 @@
# frozen_string_literal: true
class WowCovenantsWorker < WowSidekiqWorker
def perform
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
RBattlenet.set_options(locale: 'all')
result = RBattlenet::Wow::Covenant.all
return unless result.status_code == 200
result.covenants.each do |covenant|
wow_covenant = WowCovenant.find_or_initialize_by(covenant_id: covenant.id)
# Localisation data
locales.each do |locale|
Mobility.with_locale(locale[0]) { wow_covenant.name = covenant.name[locale[1]] }
end
wow_covenant.save
WowCovenantDetailWorker.perform_async(wow_covenant.covenant_id) if wow_covenant.persisted?
end
end
end