From 56f5841d4b9c12296cdfcaeff174b2627d59afc8 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 7 Dec 2024 11:49:49 -0500 Subject: Migrate to full rails app --- app/controllers/application_controller.rb | 3 + app/controllers/concerns/.keep | 0 app/controllers/pokedex_controller.rb | 10 ++ app/controllers/pokemon_controller.rb | 99 ++++++++++++++++++++ .../pokeviewer/application_controller.rb | 5 - app/controllers/pokeviewer/pokedex_controller.rb | 14 --- app/controllers/pokeviewer/pokemon_controller.rb | 103 --------------------- app/controllers/pokeviewer/uploader_controller.rb | 26 ------ app/controllers/uploader_controller.rb | 23 +++++ 9 files changed, 135 insertions(+), 148 deletions(-) create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/pokedex_controller.rb create mode 100644 app/controllers/pokemon_controller.rb delete mode 100644 app/controllers/pokeviewer/application_controller.rb delete mode 100644 app/controllers/pokeviewer/pokedex_controller.rb delete mode 100644 app/controllers/pokeviewer/pokemon_controller.rb delete mode 100644 app/controllers/pokeviewer/uploader_controller.rb create mode 100644 app/controllers/uploader_controller.rb (limited to 'app/controllers') diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000..1c07694 --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/controllers/pokedex_controller.rb b/app/controllers/pokedex_controller.rb new file mode 100644 index 0000000..81c00e8 --- /dev/null +++ b/app/controllers/pokedex_controller.rb @@ -0,0 +1,10 @@ +class PokedexController < ApplicationController + def index + @species = Species. + order(id: :asc). + includes(:pokedex_entries). + order("pokedex_entries.trainer_id ASC") + + @trainers = Trainer.order(id: :asc) + end +end diff --git a/app/controllers/pokemon_controller.rb b/app/controllers/pokemon_controller.rb new file mode 100644 index 0000000..3f1ecde --- /dev/null +++ b/app/controllers/pokemon_controller.rb @@ -0,0 +1,99 @@ +class PokemonController < ApplicationController + before_action :load_pokemon, only: [:show, :embed] + + def index + pokemon = Pokemon.order(Arel.sql("trainer_id IS NULL DESC")). + order(trainer_id: :asc). + order(box: :asc). + order(slot: :asc). + joins(:current). + includes(:current). + chunk do |p| + if p.trainer_id.nil? + -1 + else + p.trainer_id + end + end + + @unaccounted = [] + + begin + if pokemon.peek.first == -1 + @unaccounted = pokemon.next.second + end + rescue StopIteration + # There are no Pokémon, but that's fine. + end + + @trainers = Trainer.order(id: :asc).all.map do |trainer| + if trainer.id == pokemon.peek.first + party = [] + + boxes = (1..14).map do |i| + { + name: trainer.box_name(i), + pokemon: [nil] * 30 + } + end + + pokemon.next.second.chunk do |p| + if p.box.nil? + -1 + else + p.box + end + end.each do |box, pokes| + if box == -1 + party = pokes + else + boxes[box-1][:pokemon] = (0..29).map do |i| + if not pokes.empty? and (pokes.first.slot == i) + pokes.shift + else + nil + end + end + end + end + + [trainer, party, boxes] + else + nil + end + end.compact + end + + def show + end + + def show_revision + @revision = Revision. + where( + sequential_id: params[:revision_id], + pokemon: { uuid: params[:id] } + ).includes( + :species, :item, :move_1, :move_2, :move_3, :move_4, + pokemon: [:trainer, :location] + ).first + + @pokemon = @revision.pokemon + + render :show + end + + def embed + render layout: false + end + + protected + def load_pokemon + @pokemon = Pokemon.includes( + current: [ + :species, :item, :move_1, :move_2, :move_3, :move_4, + pokemon: [:trainer, :location]] + ).find_by_uuid! params[:id] + + @revision = @pokemon.current + end +end diff --git a/app/controllers/pokeviewer/application_controller.rb b/app/controllers/pokeviewer/application_controller.rb deleted file mode 100644 index e342b11..0000000 --- a/app/controllers/pokeviewer/application_controller.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Pokeviewer - class ApplicationController < ::ApplicationController - protect_from_forgery with: :exception - end -end diff --git a/app/controllers/pokeviewer/pokedex_controller.rb b/app/controllers/pokeviewer/pokedex_controller.rb deleted file mode 100644 index 8286977..0000000 --- a/app/controllers/pokeviewer/pokedex_controller.rb +++ /dev/null @@ -1,14 +0,0 @@ -require_dependency "pokeviewer/application_controller" - -module Pokeviewer - class PokedexController < ApplicationController - def index - @species = Species. - order(id: :asc). - includes(:pokedex_entries). - order("pokeviewer_pokedex_entries.trainer_id ASC") - - @trainers = Trainer.order(id: :asc) - end - end -end diff --git a/app/controllers/pokeviewer/pokemon_controller.rb b/app/controllers/pokeviewer/pokemon_controller.rb deleted file mode 100644 index d0bf432..0000000 --- a/app/controllers/pokeviewer/pokemon_controller.rb +++ /dev/null @@ -1,103 +0,0 @@ -require_dependency "pokeviewer/application_controller" - -module Pokeviewer - class PokemonController < ApplicationController - before_action :load_pokemon, only: [:show, :embed] - - def index - pokemon = Pokemon.order(Arel.sql("trainer_id IS NULL DESC")). - order(trainer_id: :asc). - order(box: :asc). - order(slot: :asc). - joins(:current). - includes(:current). - chunk do |p| - if p.trainer_id.nil? - -1 - else - p.trainer_id - end - end - - @unaccounted = [] - - begin - if pokemon.peek.first == -1 - @unaccounted = pokemon.next.second - end - rescue StopIteration - # There are no Pokémon, but that's fine. - end - - @trainers = Trainer.order(id: :asc).all.map do |trainer| - if trainer.id == pokemon.peek.first - party = [] - - boxes = (1..14).map do |i| - { - name: trainer.box_name(i), - pokemon: [nil] * 30 - } - end - - pokemon.next.second.chunk do |p| - if p.box.nil? - -1 - else - p.box - end - end.each do |box, pokes| - if box == -1 - party = pokes - else - boxes[box-1][:pokemon] = (0..29).map do |i| - if not pokes.empty? and (pokes.first.slot == i) - pokes.shift - else - nil - end - end - end - end - - [trainer, party, boxes] - else - nil - end - end.compact - end - - def show - end - - def show_revision - @revision = Revision. - where( - sequential_id: params[:revision_id], - pokeviewer_pokemon: { uuid: params[:id] } - ).includes( - :species, :item, :move_1, :move_2, :move_3, :move_4, - pokemon: [:trainer, :location] - ).first - - @pokemon = @revision.pokemon - - render :show - end - - def embed - render layout: false - end - - protected - def load_pokemon - @pokemon = Pokemon.includes( - current: [ - :species, :item, :move_1, :move_2, :move_3, :move_4, - pokemon: [:trainer, :location]] - ).find_by_uuid! params[:id] - - @revision = @pokemon.current - end - end -end diff --git a/app/controllers/pokeviewer/uploader_controller.rb b/app/controllers/pokeviewer/uploader_controller.rb deleted file mode 100644 index d72dd9a..0000000 --- a/app/controllers/pokeviewer/uploader_controller.rb +++ /dev/null @@ -1,26 +0,0 @@ -require_dependency "pokeviewer/application_controller" - -module Pokeviewer - class UploaderController < ApplicationController - skip_before_action :verify_authenticity_token - before_action :authenticate_user_from_token! - - def submit - ExtractSaveDataJob.perform_later params[:game].as_json - - render json: { message: "Data submitted for processing." } - end - - private - - def authenticate_user_from_token! - login = request.headers["X-User-Login"].presence - token = request.headers["X-User-Token"].presence - - unless authenticate_pokeviewer(login, token) - head :unauthorized - end - end - - end -end diff --git a/app/controllers/uploader_controller.rb b/app/controllers/uploader_controller.rb new file mode 100644 index 0000000..72d4c2e --- /dev/null +++ b/app/controllers/uploader_controller.rb @@ -0,0 +1,23 @@ +class UploaderController < ApplicationController + skip_before_action :verify_authenticity_token + before_action :authenticate_user_from_token! + + def submit + ExtractSaveDataJob.perform_later params[:game].as_json + + render json: { message: "Data submitted for processing." } + end + + private + + def authenticate_user_from_token! + login = request.headers["X-User-Login"].presence + token = request.headers["X-User-Token"].presence + + # TODO: Replace this. + unless authenticate_pokeviewer(login, token) + head :unauthorized + end + end + +end -- cgit 1.4.1