Skip to content

Instantly share code, notes, and snippets.

@jagwire
Created July 8, 2016 21:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jagwire/d0c194b9a5a173cf6b845c026ed3f7dc to your computer and use it in GitHub Desktop.
Save jagwire/d0c194b9a5a173cf6b845c026ed3f7dc to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'sinatra'
require 'data_mapper'
require 'json'
require 'thin'
class MyThinBackend < ::Thin::Backends::TcpServer
def initialize(host, port, options)
super(host,port)
@ssl=true
@ssl_options = options
end
end
configure do
set :environment, :production
set :bind, '0.0.0.0'
set :port, 443
set :server, "thin"
class << settings
def server_settings
{
:backend => MyThinBackend,
:private_key_file => File.dirname(__FILE__)+"/ca.key",
# :cert_chain_file => File.dirname(__FILE__)+"/ca.crt",
:cert_chain_file => File.dirname(__FILE__)+"/trust-chain.crt",
:verify_peer => false,
:ssl_version => :TLSv1_2,
# :cipher_list => "ALL:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:!ADH:!LOW:!EXP:!DES-CBC3-SHA:!RC4:@STRENGTH"
# :cipher_list => "EECDH:ECDSA:AESGCM:EECDH:aRSA:AESGCM:EECDH:ECDSA:SHA384:EECDH:ECDSA:SHA256:EECDH:aRSA:SHA384:EECDH:aRSA:SHA256:EECDH:aRSA:EECDH:EDH:aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4"
# :cipher_list => "ALL:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"
# :cipher_list => "HIGH:ECDHE-RSA-AES256-SHA384:!DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:!DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA256:!DHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA:!TLS_RSA_WITH_AES_256_GCM_SHA384"
# :cipher_list => "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
:cipher_list => "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"
}
end
end
end
#set :port, 80
#set :bind, '0.0.0.0'
#DataMapper stuff
DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, 'postgres://postgres:postgres@0.0.0.0/mhs')
#DataMapper.setup :default, {
# :adapter => 'postgres',
# :host => 'localhost',
# :database => 'ryan',
# :user => 'ryan',
# :password => 'ryan'
#}
class GameEvent
include DataMapper::Resource
property :id, Serial
property :timestamp, DateTime
property :gameId, String
property :gameVersion, String
property :playerId, String
property :sessionId, String
property :unit, Integer
property :task, Integer
property :type, String
property :event_info, Text
end
DataMapper.finalize
GameEvent.auto_upgrade!
class String
def numeric?
Float(self) != nil rescue false
end
end
get '/' do
"hello world!"
end
get '/api/v1/ping' do
"pong!"
end
get '/api/v1/resources/events' do
content_type :json
if !params['page']
GameEvent.all(:limit => 50, :order => [:id]).to_json
else
GameEvent.all(:offset => 50*params['page'].to_i, :limit => 50, :order => [:id]).to_json
end
# GameEvent.all.to_json
end
get '/api/v1/resources/events/' do
content_type :json
if !params['page']
GameEvent.all(:limit => 50, :order => [:id]).to_json
else
GameEvent.all(:offset => 50*params['page'].to_i, :limit => 50, :order => [:id]).to_json
end
#GameEvent.all.to_json
end
get '/api/v1/resources/events/:id' do
if params['id'].numeric?
"retrieving specific event with id: #{params['id']}"
else
"Error: id must be numeric! Actual type is: #{params['id'].class}"
end
end
get '/api/v1/resources/events/delete/all' do
GameEvent.all.destroy
"Destroyed All Events"
end
post '/api/v1/resources/events' do
request.body.rewind
payload = JSON.parse request.body.read
p payload
new_event = GameEvent.create(:timestamp => Time.at(payload["timestamp"].to_i), :gameId => payload["gameId"], :gameVersion => payload["asdf"], :playerId =>payload["playerId"], :sessionId => payload["sessionId"], :unit => payload["unit"], :task => payload["task"], :type => payload["type"], :event_info => payload["event_"].to_json)
content_type :json
payload.to_json
end
delete '/api/v1/resources/events/' do
"deleting all events"
end
delete '/api/v1/resources/events/:id' do
"deleting single event with id: #{params['id']}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment