32 lines
1.1 KiB
Ruby
32 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class WowReputationDetailWorker < WowSidekiqWorker
|
|
def perform(reputation_id)
|
|
return unless (wow_reputation = WowReputation.find_by(reputation_id: reputation_id))
|
|
|
|
RBattlenet.set_options(locale: 'all')
|
|
result = RBattlenet::Wow::ReputationFaction.find(reputation_id)
|
|
|
|
return unless result.status_code == 200
|
|
|
|
# Global data
|
|
wow_reputation.wow_reputation_tier = WowReputationTier.find_by(reputation_tier_id: result.reputation_tiers.id)
|
|
wow_reputation.faction = result.player_faction.type if result.player_faction
|
|
|
|
# If it's a meta faction
|
|
result.factions&.each do |faction|
|
|
wow_reputation.sub_wow_reputations << WowReputation.find_by(reputation_id: faction.id)
|
|
end
|
|
|
|
# Localisation data
|
|
locales.each do |locale|
|
|
Mobility.with_locale(locale[0]) do
|
|
wow_reputation.description = result.description[locale[1]] if result.description
|
|
wow_reputation.translated_faction = result.player_faction.name[locale[1]] if result.player_faction
|
|
end
|
|
end
|
|
|
|
wow_reputation.save
|
|
end
|
|
end
|