Created
July 8, 2016 21:28
-
-
Save jagwire/d0c194b9a5a173cf6b845c026ed3f7dc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:[email protected]/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