Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement