diff options
| author | realtradam <[email protected]> | 2024-06-27 12:41:26 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-06-27 12:41:26 -0400 |
| commit | c8be5658bae95b94198dc00bd206ba324d9404e0 (patch) | |
| tree | 24563828d9f04a4e52c9187cff3c028434fd886c /app/controllers/api | |
| parent | 8ec0664fe7cf4a34bc5fc1f162c053622a42dd41 (diff) | |
| download | gameHolster-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.rb | 109 | ||||
| -rw-r--r-- | app/controllers/api/v1/games_controller.rb | 167 | ||||
| -rw-r--r-- | app/controllers/api/v1/tags_controller.rb | 15 | ||||
| -rw-r--r-- | app/controllers/api/v1/users_controller.rb | 10 |
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 |
