Remove pet state labeling & Neopets gem

This labeling technique hasn't worked in a long time bc it requires being logged in. These days we just manually label them with the 2020 support tools I think!

Clearing out the Neopets gem should help us manage some gem dep conflicts in the 4.2 upgrade too (I think the nokogiri one gets tricky?)
This commit is contained in:
Emi Matchu 2023-08-02 14:58:16 -07:00
parent e7529f5bc3
commit fb04c68294
4 changed files with 27 additions and 33 deletions

View file

@ -39,7 +39,6 @@ gem 'sanitize', '~> 2.0.3'
# For working with Neopets APIs.
# unstable version of RocketAMF interprets info registry as a hash instead of an array
gem 'RocketAMF', :git => 'https://github.com/rubyamf/rocketamf.git'
gem 'neopets', '~> 0.2.0', :git => 'https://github.com/matchu/neopets.git'
# For working with the OpenNeo ID service.
gem 'msgpack', '~> 0.5.3'

View file

@ -1,10 +1,3 @@
GIT
remote: https://github.com/matchu/neopets.git
revision: 5d13a720b616ba57fbbd54541f3e5daf02b3fedc
specs:
neopets (0.2.0)
nokogiri (~> 1.5.2)
GIT
remote: https://github.com/rubyamf/rocketamf.git
revision: 796f591d002b5cf47df436dbcbd6f2ab00e869ed
@ -228,7 +221,6 @@ DEPENDENCIES
memcache-client (~> 1.8.5)
msgpack (~> 0.5.3)
mysql2 (>= 0.3.11)
neopets (~> 0.2.0)!
nokogiri (~> 1.5.2)
openneo-auth-signatory (~> 0.1.0)
parallel (~> 1.13.0)

View file

@ -40,7 +40,6 @@ class Pet < ActiveRecord::Base
biology = pet_data[:biology_by_zone]
biology[0] = nil # remove effects if present
@pet_state = self.pet_type.add_pet_state_from_biology! biology
@pet_state.label_by_pet(self, pet_data[:owner])
@items = Item.collection_from_pet_type_and_registries(self.pet_type,
viewer_data[:object_info_registry], viewer_data[:object_asset_registry],
options[:item_scope])

View file

@ -98,30 +98,8 @@ class PetState < ActiveRecord::Base
end
end
def label_by_pet(pet, username)
# If this pet is already labeled with a gender/mood, or it's unconverted
# and therefore has none, skip.
return false if self.labeled? || self.unconverted?
# Find this pet on the owner's userlookup, where we can get both its gender
# and its mood.
begin
user_pet = Neopets::User.new(username).pets.
find { |user_pet| user_pet.name.downcase == pet.name.strip.downcase }
self.female = user_pet.female?
self.mood_id = user_pet.mood.id
self.labeled = true
rescue
# If there's an error loading the userlookup data (e.g. account is
# frozen), no big deal; we just won't label the pet right now. Proceed
# as usual.
end
true
end
def mood
Neopets::Pet::Mood.find(self.mood_id)
Mood.find(self.mood_id)
end
def gender_name
@ -246,5 +224,31 @@ class PetState < ActiveRecord::Base
end
end
end
# Copied from https://github.com/matchu/neopets/blob/5d13a720b616ba57fbbd54541f3e5daf02b3fedc/lib/neopets/pet/mood.rb
class Mood
attr_reader :id, :name
def initialize(options)
@id = options[:id]
@name = options[:name]
end
def self.find(id)
self.all_by_id[id.to_i]
end
def self.all
@all ||= [
Mood.new(:id => 1, :name => :happy),
Mood.new(:id => 2, :name => :sad),
Mood.new(:id => 4, :name => :sick)
]
end
def self.all_by_id
@all_by_id ||= self.all.inject({}) { |h, m| h[m.id] = m; h }
end
end
end