Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'pp'
- require 'sinatra'
- require 'json'
- require 'dm-types'
- #require 'dm-more'
- require 'dm-core'
- #gem 'dm-core', '~> 0.10.2'
- require 'dm-migrations'
- require 'dm-is-self_referential'
- class User
- include DataMapper::Resource
- property :id, Serial
- property :username, Text
- property :password, Text
- property :channels, Json
- is :self_referential
- has n, :messages
- end
- class Message
- include DataMapper::Resource
- property :id, Serial
- property :body, Text
- belongs_to :user
- end
- DataMapper.setup(:default, 'mysql://root@localhost/talker')
- DataMapper.auto_upgrade!
- @@users = []
- get '/checkpassword/:username/:password' do
- #return "nope" if not request.env["REMOTE_ADDR"] == "173.203.223.148"
- username = params[:username]
- content_type 'application/json'
- password = params[:password]
- user = User.first(:username => username, :password => password)
- if not user.nil?
- { :status => "ok" }.to_json
- else
- { :status => "fail" }.to_json
- end
- end
- post '/addchannel/:time/:user' do
- content_type 'application/json'
- username = params[:user]
- time = params[:time]
- user = User.first(:username => username)
- str = user.channels.join("===")
- str += "==="+time.to_s
- ar = str.split("===")
- user.channels = ar
- user.save
- user.channels.to_json
- end
- post '/sendmessage/:username/:message' do
- message = params[:message]
- username = params[:username]
- user = User.first(:username => username)
- return if user.nil?
- s = TCPSocket.open("realtime.redrob.in","8081")
- user.parents.each do |parent|
- parent.channels ||= []
- puts parent.channels
- parent.channels.each do |channel|
- s.puts "ADDMESSAGE #{channel} #{username}: #{message}"
- end
- end
- s.close
- user.messages.new(:body => message)
- user.save
- end
- get '/getmessages/:username' do
- content_type 'application/json'
- username = params[:username]
- messages = []
- user = User.first(:username => username)
- user.children.each do |user|
- messages << user.messages.all.map{ |x| {:name => user.username, :body => x.body} }
- end
- messages.first(20).to_json
- end
- get '/test' do
- pp request.env["REMOTE_ADDR"]
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement