summaryrefslogtreecommitdiffhomepage
path: root/app/controllers/api
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-06-27 12:41:26 -0400
committerrealtradam <[email protected]>2024-06-27 12:41:26 -0400
commitc8be5658bae95b94198dc00bd206ba324d9404e0 (patch)
tree24563828d9f04a4e52c9187cff3c028434fd886c /app/controllers/api
parent8ec0664fe7cf4a34bc5fc1f162c053622a42dd41 (diff)
downloadgameHolster-c8be5658bae95b94198dc00bd206ba324d9404e0.tar.gz
gameHolster-c8be5658bae95b94198dc00bd206ba324d9404e0.zip
add frontend to repo
Diffstat (limited to 'app/controllers/api')
-rw-r--r--app/controllers/api/v1/auth_controller.rb109
-rw-r--r--app/controllers/api/v1/games_controller.rb167
-rw-r--r--app/controllers/api/v1/tags_controller.rb15
-rw-r--r--app/controllers/api/v1/users_controller.rb10
4 files changed, 0 insertions, 301 deletions
diff --git a/app/controllers/api/v1/auth_controller.rb b/app/controllers/api/v1/auth_controller.rb
deleted file mode 100644
index 590be3b..0000000
--- a/app/controllers/api/v1/auth_controller.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'net/http'
-require 'bcrypt'
-
-class Api::V1::AuthController < ApplicationController
- class << self
- end
-
- def data
- if !cookies[:session].nil?
- puts cookies[:session]
- #render json: Api::V1::AuthController.user_table[cookies[:session]]
- result = User.find_by(access_token_digest: cookies[:session])
- puts "--- RESULT: ---"
- puts result
- render json: result
- else
- puts "Not logged in"
- render json: { info: "Not logged in" }, status: 401
- end
- end
- def callback
- # user logs in through github
- # github redirects them to this endpoint with the token in the url as query params
- # we need to use this token to exchange with github for user info(i.e username)
- #puts "Code: #{params[:code]}" # this is the github token
- #puts ENV["GITHUB_CLIENT_SECRET"]
- #puts ENV["GITHUB_CLIENT_ID"]
- access_token = get_access_token(params[:code])
- user_data = JSON.parse(get_github_user_data(access_token))
- #puts "------------------------- USER DATA: ------------------------- "
- #pp user_data
- id = user_data['id'].to_s
- #puts "id: #{id}, at: #{access_token}"
- access_token_digest = BCrypt::Password.create(access_token)
- #cookies[:session] = access_token_digest
- cookies[:session] = {
- value: access_token_digest,
- #domain: :all,
- #same_site: :none,
- secure: true
- }
- #user_params = {
- # # access_token_digest: hashed_token,
- # user_data: user_data
- #}
- #puts "USER DATA HERE NERD"
- #puts user_data.class
- user = User.find_or_create_by(identifier: id)
- user.user_data = user_data
- user.access_token_digest = access_token_digest
- user.user_name = user_data["login"]
- user.save
- #redirect_to 'http://localhost:5173/', allow_other_host: true
- redirect_to "#{ENV['ROOT_DOMAIN']}/closewindow", allow_other_host: true
- end
-
- private
-
- def get_github_user_data(access_token)
- uri = URI("https://api.github.com/user")
- headers = { Authorization: "Bearer #{access_token}" }
- response = Net::HTTP.get(
- uri,
- headers
- )
- puts "Response Body"
- puts response
- #if response.is_a?(Net::HTTPSuccess)
- #if response.body.nil?
- result = response
- if !result["error"].nil?
- puts "Error: #{result["error"]}"
- puts response
- # we had an error
- # TODO
- else
- puts "huh?" if result.nil?
- return result
- end
- #else
- # puts "Error(body nil)"
- # something went wrong?
- # TODO
- #end
- end
-
- def get_access_token(github_user_code)
- uri = URI("https://github.com/login/oauth/access_token?client_id=#{ENV["GITHUB_CLIENT_ID"]}&client_secret=#{ENV["GITHUB_CLIENT_SECRET"]}&code=#{github_user_code}")
- #uri = URI('https://github.com/login/oauth/access_token')
- headers = {Accept: 'application/json'}
- response = Net::HTTP.post(
- uri,
- nil,
- headers
- )
- if response.is_a?(Net::HTTPSuccess)
- result = JSON.parse(response.body)
- if !result["error"].nil?
- # we had an error
- else
- return result["access_token"]
- end
- else
- # something went wrong?
- # TODO
- end
- end
-end
-
diff --git a/app/controllers/api/v1/games_controller.rb b/app/controllers/api/v1/games_controller.rb
deleted file mode 100644
index 4346244..0000000
--- a/app/controllers/api/v1/games_controller.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-require "zip"
-
-class Api::V1::GamesController < ApplicationController
- #skip_before_action :verify_authenticity_token
- before_action :allow_iframe, only: [:show_file]
- def create
- puts "----- PARAMS PLATFORM TAG ----------"
- pp params["game"]["platform_tag"]
- user = User.find_by(access_token_digest: cookies[:session])
- #user = User.first # temporary for debug
- if(!user)
- render json: {session: cookies[:session]}, status: 401
- else
- pp params
-
- @game = user.games.new(game_params.except(:status, :platform_tag))
- @game.titleSlug = game_params[:title].parameterize
- @game.status = game_params[:status].to_i
- if !params["game"]["platform_tag"].nil?
- params["game"]["platform_tag"].each do |tag|
- tag_obj = Tag.find_by(tag_type: "platform", name: tag)
- if tag_obj
- @game.tags << tag_obj
- end
- end
- end
-
- @game.save_zip(params[:game][:zip])
-
- if @game.save
- render json: @game, status: :created
- else
- render json: @game.errors, status: :unprocessable_entity
- end
- end
- end
-
-
- # list of all games
- def index
- game = Game.all.order(created_at: :desc)
- #render json: game
- render json: game.to_json(include: [:game_files, :card_img, :char_img, :title_img, :tags])
- end
-
- # single game or list of user's games
- #get 'games/:user/:game', to: 'games#show'
- #get 'games/:user', to: 'games#show'
- def show
- user = User.find_by! user_name: params[:user]
- if params[:game].nil?
- # get list of user games
- games = Game.where(user_id: user.id).order(created_at: :desc)
- render json: games.to_json(include: [:tags])
- else
- game = Game.find_by! user_id: user.id, titleSlug: params[:game]
- render json: game.to_json(include: [:tags])
- # get game
- end
- end
-
- # :user/:game/*path/:file
- def show_file
- user = User.find_by user_name: params[:user]
-
- # if no user given then just show all games
- if(user.nil?)
- game = Game.all.order(created_at: :desc)
- render json: game
- return
- end
-
- game = Game.find_by user_id: user.id, titleSlug: params[:game]
-
- # if no game given then just show all games from that user
- if(game.nil?)
- game = Game.all.order(created_at: :desc)
- render json: game
- return
- end
-
- # format and file is seperated in rails
- filename = params[:file]
- if !params[:format].nil?
- filename = "#{filename}.#{params[:format]}"
- end
-
- # if we have no path, make it a blank string
- # this lets us later match with files that are in the root
- params[:path] ||= ""
-
- result = game.game_files.blobs.find_by(filename: filename, filepath: params[:path].delete_suffix('/').delete_prefix('/')) # TODO check if we need to do the prefix/suffix deletion at all
-
- # we shouldnt need this
- #result ||= game.game_files.blobs.find_by(filename: filename)
- if(result.nil?)
- game = Game.all.order(created_at: :desc)
- render json: { filename: filename, filepath: params[:path] }
- #render json: game
- return
- end
-
- format = filename.rpartition('.').last
- if format == "html"
- render html: result.download.html_safe
- elsif format == "js"
- render js: result.download.html_safe
- #else
- # redirect_to url_for(result)
- #end
- elsif format == "gz"
- response.headers['Content-Encoding'] = 'gzip'
- second_ext = filename.rpartition('.').first.rpartition('.').last
- if second_ext == 'js'
- send_data result.download.html_safe, filename: filename, disposition: "inline", type: "application/javascript"
- elsif second_ext == 'wasm'
- send_data result.download.html_safe, filename: filename, disposition: "inline", type: "application/wasm"
- elsif second_ext == 'data'
- send_data result.download.html_safe, filename: filename, disposition: "inline", type: "application/octet-stream"
- else
- send_data result.download.html_safe, filename: filename, disposition: "inline"
- end
- else
- send_data result.download.html_safe, filename: filename, disposition: "inline"
- end
- end
-
- #get 'imggames/:user/:game?type=___', to: 'games#show_img'
- def show_img
- user = User.find_by! user_name: params[:user]
- game = Game.find_by! user_id: user.id, titleSlug: params[:game]
-
- result = nil;
- if params[:type] == "char"
- result = game.char_img.download
- elsif params[:type] == "title"
- result = game.title_img.download
- elsif params[:type] == "card"
- result = game.card_img.download
- end
-
- send_data result, type: 'image/png', disposition: 'inline'
- end
-
- private
-
- def game_params
- params.require(:game).permit(
- :title,
- :description,
- :github_link,
- :img_rendering,
- :status,
- :order,
- :card_img,
- :char_img,
- :title_img,
- :zip,
- :platform_tag
- #game_files: []
- )
- end
-
- def allow_iframe
- response.headers.delete('X-Frame-Options')
- end
-end
diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb
deleted file mode 100644
index 4b31de8..0000000
--- a/app/controllers/api/v1/tags_controller.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class Api::V1::TagsController < ApplicationController
-
- def index
- if !params[:tag_type].nil?
- tag = Tag.where(tag_type: params[:tag_type]).order(name: :asc)
-
- render json: tag.to_json
- else
- tag = Tag.all.order(tag_type: :desc, name: :asc)
- #render json: tag
- render json: tag.to_json
- end
- end
-
-end
diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb
deleted file mode 100644
index ad27ad6..0000000
--- a/app/controllers/api/v1/users_controller.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class Api::V1::UsersController < ApplicationController
- def index
- # return list of all users
- users = User.all.order(created_at: :desc)
- #render json: users.to_json(only: [:name])
- #render json: users.to_json(only: [:user])
- #render json: users.to_json(only: { only: [:name] })
- render json: users.to_json(include: [games: { only: [:title, :titleSlug] }])
- end
-end