Advertisement
Guest User

Untitled

a guest
May 25th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.16 KB | None | 0 0
  1. require 'rubygems'
  2. require 'pp'
  3. require 'sinatra'
  4. require 'json'
  5. require 'dm-types'
  6. #require 'dm-more'
  7. require 'dm-core'
  8. #gem 'dm-core', '~> 0.10.2'
  9. require 'dm-migrations'
  10. require 'dm-is-self_referential'
  11.  
  12. class User
  13.     include DataMapper::Resource
  14.     property :id, Serial
  15.     property :username, Text
  16.     property :password, Text
  17.     property :channels, Json
  18.     is :self_referential
  19.     has n, :messages
  20. end
  21.  
  22. class Message
  23.     include DataMapper::Resource
  24.     property :id, Serial
  25.     property :body, Text
  26.     belongs_to :user
  27. end
  28.  
  29. DataMapper.setup(:default, 'mysql://root@localhost/talker')
  30. DataMapper.auto_upgrade!
  31.  
  32.  
  33.  
  34. @@users = []
  35. get '/checkpassword/:username/:password' do
  36.     #return "nope" if not request.env["REMOTE_ADDR"] == "173.203.223.148"
  37.     username = params[:username]
  38.     content_type 'application/json'
  39.     password = params[:password]
  40.     user = User.first(:username => username, :password => password)
  41.     if not user.nil?
  42.  
  43.         { :status => "ok" }.to_json
  44.  
  45.     else
  46.  
  47.         { :status => "fail" }.to_json
  48.  
  49.     end
  50.  
  51. end
  52.  
  53. post '/addchannel/:time/:user' do
  54.    
  55.     content_type 'application/json'
  56.     username = params[:user]
  57.     time = params[:time]
  58.     user = User.first(:username => username)
  59.     str = user.channels.join("===")
  60.     str += "==="+time.to_s
  61.     ar = str.split("===")
  62.     user.channels = ar
  63.     user.save
  64.     user.channels.to_json
  65. end
  66.  
  67. post '/sendmessage/:username/:message' do
  68.  
  69.     message = params[:message]
  70.  
  71.     username = params[:username]
  72.  
  73.     user = User.first(:username => username)
  74.     return if user.nil?
  75.    
  76.     s = TCPSocket.open("realtime.redrob.in","8081")
  77.     user.parents.each do |parent|
  78.         parent.channels ||= []
  79.         puts parent.channels
  80.         parent.channels.each do |channel|
  81.            
  82.             s.puts "ADDMESSAGE #{channel} #{username}: #{message}"
  83.         end
  84.        
  85.     end
  86.     s.close
  87.     user.messages.new(:body => message)
  88.     user.save
  89. end
  90.  
  91. get '/getmessages/:username' do
  92.     content_type 'application/json'
  93.     username = params[:username]
  94.     messages = []
  95.     user = User.first(:username => username)
  96.     user.children.each do |user|
  97.         messages << user.messages.all.map{ |x| {:name => user.username, :body => x.body} }
  98.     end
  99.     messages.first(20).to_json
  100. end
  101.  
  102. get '/test' do
  103.  
  104.     pp request.env["REMOTE_ADDR"]
  105.  
  106. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement