LifePex/src/app.rb

83 lines
2.1 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require "pry"
# require "sinatra"
require "sinatra/cookies"
require "sinatra/base"
require "sinatra/namespace"
require "slim"
require "bcrypt"
require "jwt"
require "sequel"
require "json"
require "doc_my_routes"
require_relative "./utils/url.rb"
module LifePex
DB = Sequel.connect ARGV[0] || ENV["LIFEPEX_DB"] || "sqlite://sqlite.db"
BASE_URL = ARGV[1] || ENV["LIFEPEX_BASE_URL"] || "http://localhost:4567"
SECRET = ENV['LIFEPEX_SECRET'] || "LifePexSecret"
puts "WARNING: Your secret is NOT very secret, thing about changing the LIFEPEX_SECRET" if SECRET == "LifePexSecret"
CODE_VERSION = DB[:meta].first[:code_version]
CODE_DATE = DB[:meta].first[:code_date]
include LifePex::Utils::Url
module Systems
end
end
require_relative "./utils/json_api.rb"
require_relative "./utils/string.rb"
require_relative "./achievements/dsl.rb"
require_relative "./achievements/achievement.rb"
require_relative "./models/level.rb"
require_relative "./models/user.rb"
require_relative "./models/pex.rb"
require_relative "./models/user_pex.rb"
require_relative "./models/achievement.rb"
require_relative "./systems/api_list.rb"
require_relative "./systems/auth.rb"
require_relative "./systems/user.rb"
require_relative "./systems/pex.rb"
require_relative "./systems/pex2.rb"
require_relative "./systems/achievement.rb"
class LifePex::Systems::PublicSystem < Sinatra::Base
set :public_folder, 'public'
end
class LifePex::Systems::BaseSystem < Sinatra::Base
DocMyRoutes.configure do |config|
config.title = "LifePex"
config.description = "LifePex JSON REST API documentation"
end
enable :sessions
use LifePex::Systems::AuthSystem
use LifePex::Systems::PublicSystem
use LifePex::Systems::UserSystem
use LifePex::Systems::PexSystem
use LifePex::Systems::Pex2System
use LifePex::Systems::Achievement
include JSON::API
not_found do
if accept_json?
{ message: "No route or entity \"#{request.path}\" found" }.to_json
else
raise
end
end
get "/api/meta/v1" do
LifePex::Systems::ApiList.get_all_api_routes.to_json
end
set :bind, ENV["LIFEPEX_BIND"] || "127.0.0.1"
run! if app_file == $0
end