Compare commits
2 commits
be0faaa36e
...
0244653cb0
Author | SHA1 | Date | |
---|---|---|---|
0244653cb0 | |||
2c0d55edd1 |
9 changed files with 56 additions and 48 deletions
|
@ -1,5 +1,7 @@
|
|||
class PetTypesController < ApplicationController
|
||||
def index
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
@species_names = Species.order(:name).map(&:human_name)
|
||||
@color_names = Color.order(:name).map(&:human_name)
|
||||
|
||||
|
@ -23,6 +25,18 @@ class PetTypesController < ApplicationController
|
|||
if @selected_color
|
||||
@pet_types = @pet_types.where(color_id: @selected_color)
|
||||
end
|
||||
}
|
||||
|
||||
format.json {
|
||||
if stale?(etag: PetState.last_updated_key)
|
||||
render json: {
|
||||
species: Species.order(:name).all,
|
||||
colors: Color.order(:name).all,
|
||||
supported_poses: PetState.all_supported_poses,
|
||||
}
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
class PetsController < ApplicationController
|
||||
rescue_from Pet::PetNotFound, with: :pet_not_found
|
||||
rescue_from PetType::DownloadError, SwfAsset::DownloadError, with: :asset_download_error
|
||||
rescue_from Pet::DownloadError, with: :pet_download_error
|
||||
rescue_from Pet::UnexpectedDataFormat, with: :unexpected_data_format
|
||||
|
||||
|
@ -48,12 +47,6 @@ class PetsController < ApplicationController
|
|||
:status => :not_found
|
||||
end
|
||||
|
||||
def asset_download_error(e)
|
||||
Rails.logger.warn e.message
|
||||
pet_load_error :long_message => t('pets.load.asset_download_error'),
|
||||
:status => :gateway_timeout
|
||||
end
|
||||
|
||||
def pet_download_error(e)
|
||||
Rails.logger.warn e.message
|
||||
Rails.logger.warn e.backtrace.join("\n")
|
||||
|
|
|
@ -12,7 +12,7 @@ class PetState < ApplicationRecord
|
|||
|
||||
belongs_to :pet_type
|
||||
|
||||
delegate :color, to: :pet_type
|
||||
delegate :species_id, :species, :color_id, :color, to: :pet_type
|
||||
|
||||
alias_method :swf_asset_ids_from_association, :swf_asset_ids
|
||||
|
||||
|
@ -209,5 +209,23 @@ class PetState < ApplicationRecord
|
|||
self.female = female
|
||||
self.unconverted = unconverted
|
||||
end
|
||||
|
||||
def self.last_updated_key
|
||||
PetState.maximum(:id)
|
||||
end
|
||||
|
||||
def self.all_supported_poses
|
||||
Rails.cache.fetch("PetState.all_supported_poses #{last_updated_key}") do
|
||||
{}.tap do |h|
|
||||
includes(:pet_type).find_each do |pet_state|
|
||||
h[pet_state.species_id] ||= {}
|
||||
h[pet_state.species_id][pet_state.color_id] ||= []
|
||||
h[pet_state.species_id][pet_state.color_id] << pet_state.pose
|
||||
end
|
||||
|
||||
h.values.map(&:values).flatten(1).each(&:uniq!).each(&:sort!)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -156,7 +156,5 @@ class PetType < ApplicationRecord
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
class DownloadError < Exception;end
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ require 'addressable/template'
|
|||
require 'async'
|
||||
require 'async/barrier'
|
||||
require 'async/semaphore'
|
||||
require 'fileutils'
|
||||
require 'uri'
|
||||
|
||||
class SwfAsset < ApplicationRecord
|
||||
# We use the `type` column to mean something other than what Rails means!
|
||||
|
@ -373,6 +371,4 @@ class SwfAsset < ApplicationRecord
|
|||
# linked to it, meaning that it's probably wearable by all bodies.
|
||||
self.body_id = 0 if !@body_id_overridden && (!self.body_specific? || (!self.new_record? && self.body_id_changed?))
|
||||
end
|
||||
|
||||
class DownloadError < Exception;end
|
||||
end
|
||||
|
|
|
@ -35,7 +35,8 @@ en-MEEP:
|
|||
terms: Terms of Use (meeped Sep 2022)
|
||||
contact: Meeptact
|
||||
email: Questions, comments, meepits
|
||||
copyright: Images © 1999–%{year} World of Neopets, Inc. All Rights Reserved.
|
||||
copyright:
|
||||
Images © 1999–%{year} World of Neopets, Inc. All Rights Reserved.
|
||||
Used With Permission. Meep.
|
||||
|
||||
items:
|
||||
|
@ -634,10 +635,6 @@ en-MEEP:
|
|||
|
||||
load:
|
||||
not_found: We couldn't meep a pet by that name. Is it meeped correctly?
|
||||
asset_download_error:
|
||||
We meeped the pet and what it's wearing, but couldn't meep the
|
||||
associated meepia files. Maybe Neopets is down, or changed their
|
||||
firewall rules? Please meep again later!
|
||||
pet_download_error:
|
||||
We couldn't meep to Neopets to meep up the pet. Maybe they're down.
|
||||
Please try meep later!
|
||||
|
|
|
@ -755,10 +755,6 @@ en:
|
|||
|
||||
load:
|
||||
not_found: We couldn't find a pet by that name. Is it spelled correctly?
|
||||
asset_download_error:
|
||||
We found the pet and what it's wearing, but couldn't download the
|
||||
associated media files. Maybe Neopets is down, or changed their
|
||||
firewall rules? Please try again later!
|
||||
pet_download_error:
|
||||
We couldn't connect to Neopets to look up the pet. Maybe they're down.
|
||||
Please try again later!
|
||||
|
|
|
@ -116,8 +116,7 @@ es:
|
|||
submit: Guardar
|
||||
edit: Editar
|
||||
delete: Eliminar
|
||||
delete_confirmation:
|
||||
¿Estás seguro/a que quieres eliminar la lista "%{list_name}"?
|
||||
delete_confirmation: ¿Estás seguro/a que quieres eliminar la lista "%{list_name}"?
|
||||
empty: Esta lista está vacía.
|
||||
edit:
|
||||
title: Editando la lista "%{list_name}"
|
||||
|
@ -503,7 +502,6 @@ es:
|
|||
submission_success: "%{points} puntos"
|
||||
load:
|
||||
not_found: No hemos podido encontrar a un pet con ese nombre. ¿Lo has escrito correctamente?
|
||||
asset_download_error: Hemos encontrado el pet que intentas vestir, pero no hemos podido descargar las imágenes que lo asocian. Posiblemente Neopets está caído. ¡Por favor inténtalo de nuevo más tarde!
|
||||
pet_download_error: No hemos podido conectar con Neopets para ver tu pet. Posiblemente el servidor de Neopets se ha caído. ¡Por favor inténtalo de nuevo más tarde!
|
||||
users:
|
||||
index:
|
||||
|
|
|
@ -114,8 +114,7 @@ pt:
|
|||
submit: Salvar
|
||||
edit: Editar
|
||||
delete: Excluir
|
||||
delete_confirmation:
|
||||
Você tem certeza que deseja excluir "%{list_name}"?
|
||||
delete_confirmation: Você tem certeza que deseja excluir "%{list_name}"?
|
||||
empty: Esta lista está vazia.
|
||||
edit:
|
||||
title: Editando lista "%{list_name}"
|
||||
|
@ -497,7 +496,6 @@ pt:
|
|||
submission_success: "%{points} pontos"
|
||||
load:
|
||||
not_found: Não foi possível achar um pet com esse nome. Está escrito corretamente?
|
||||
asset_download_error: Nós achamos o pet e o que ele está vestindo, mas não foi possível baixar os dados. Talvez Neopets esteja fora do ar. Por favor tente mais tarde!
|
||||
pet_download_error: Nós não conseguimos conectar ao Neopets para achar o pet. Talvez eles estejam fora do ar. Por favor tente mais tarde!
|
||||
users:
|
||||
index:
|
||||
|
|
Loading…
Reference in a new issue