Advertisement
Guest User

Untitled

a guest
Jul 8th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.80 KB | None | 0 0
  1. require 'rubygems'
  2. require 'sinatra'
  3. require 'data_mapper'
  4. require 'json'
  5. require 'thin'
  6.  
  7.  
  8. class MyThinBackend < ::Thin::Backends::TcpServer
  9. def initialize(host, port, options)
  10. super(host,port)
  11. @ssl=true
  12. @ssl_options = options
  13. end
  14. end
  15.  
  16. configure do
  17. set :environment, :production
  18. set :bind, '0.0.0.0'
  19. set :port, 443
  20. set :server, "thin"
  21.  
  22. class << settings
  23. def server_settings
  24. {
  25. :backend => MyThinBackend,
  26. :private_key_file => File.dirname(__FILE__)+"/ca.key",
  27. # :cert_chain_file => File.dirname(__FILE__)+"/ca.crt",
  28. :cert_chain_file => File.dirname(__FILE__)+"/trust-chain.crt",
  29. :verify_peer => false,
  30. :ssl_version => :TLSv1_2,
  31. # :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"
  32. # :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"
  33. # :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"
  34. # :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"
  35. # :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"
  36. :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"
  37. }
  38. end
  39. end
  40. end
  41.  
  42.  
  43.  
  44. #set :port, 80
  45. #set :bind, '0.0.0.0'
  46.  
  47. #DataMapper stuff
  48. DataMapper::Logger.new($stdout, :debug)
  49. DataMapper.setup(:default, 'postgres://postgres:postgres@0.0.0.0/mhs')
  50.  
  51. #DataMapper.setup :default, {
  52. # :adapter => 'postgres',
  53. # :host => 'localhost',
  54. # :database => 'ryan',
  55. # :user => 'ryan',
  56. # :password => 'ryan'
  57.  
  58. #}
  59.  
  60.  
  61.  
  62. class GameEvent
  63. include DataMapper::Resource
  64.  
  65. property :id, Serial
  66. property :timestamp, DateTime
  67. property :gameId, String
  68. property :gameVersion, String
  69. property :playerId, String
  70. property :sessionId, String
  71. property :unit, Integer
  72. property :task, Integer
  73. property :type, String
  74. property :event_info, Text
  75.  
  76. end
  77.  
  78. DataMapper.finalize
  79. GameEvent.auto_upgrade!
  80.  
  81. class String
  82. def numeric?
  83. Float(self) != nil rescue false
  84. end
  85. end
  86.  
  87.  
  88. get '/' do
  89. "hello world!"
  90. end
  91.  
  92. get '/api/v1/ping' do
  93. "pong!"
  94. end
  95.  
  96. get '/api/v1/resources/events' do
  97. content_type :json
  98. if !params['page']
  99. GameEvent.all(:limit => 50, :order => [:id]).to_json
  100. else
  101. GameEvent.all(:offset => 50*params['page'].to_i, :limit => 50, :order => [:id]).to_json
  102. end
  103.  
  104. # GameEvent.all.to_json
  105. end
  106.  
  107. get '/api/v1/resources/events/' do
  108. content_type :json
  109. if !params['page']
  110. GameEvent.all(:limit => 50, :order => [:id]).to_json
  111. else
  112. GameEvent.all(:offset => 50*params['page'].to_i, :limit => 50, :order => [:id]).to_json
  113. end
  114.  
  115. #GameEvent.all.to_json
  116. end
  117.  
  118.  
  119. get '/api/v1/resources/events/:id' do
  120.  
  121. if params['id'].numeric?
  122. "retrieving specific event with id: #{params['id']}"
  123. else
  124. "Error: id must be numeric! Actual type is: #{params['id'].class}"
  125. end
  126. end
  127.  
  128. get '/api/v1/resources/events/delete/all' do
  129. GameEvent.all.destroy
  130. "Destroyed All Events"
  131. end
  132.  
  133.  
  134. post '/api/v1/resources/events' do
  135. request.body.rewind
  136. payload = JSON.parse request.body.read
  137.  
  138. p payload
  139.  
  140. 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)
  141.  
  142. content_type :json
  143. payload.to_json
  144.  
  145. end
  146.  
  147.  
  148. delete '/api/v1/resources/events/' do
  149. "deleting all events"
  150. end
  151.  
  152. delete '/api/v1/resources/events/:id' do
  153. "deleting single event with id: #{params['id']}"
  154. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement