danopia (owner)

Revisions

gist: 215610 Download_button fork
public
Public Clone URL: git://gist.github.com/215610.git
Embed All Files: show embed
Text #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class WavesController < ApplicationController
before_filter :require_user
 
  def index
@address = "#{current_user.login}@danopia.net"
 
server = DRbObject.new nil, 'druby://:9000'
@waves = server.waves
  end
 
  def show
@address = "danopia@danopia.net"
sock = WaveSocket.new(@address, 'localhost', 9876)
@wave = Wave.new params[:id], 'danopia.net'
 
sock.request_wave @wave
packet = sock.recv
sock.sock.close
 
if packet.type != 'waveserver.ProtocolWaveletUpdate'
render :text => 'Recieved bad packet from server: ' + packet.type
return
end
 
packet[1].each do |part|
revision = Revision.new @wave, part[0].first, part[1].first
part = part[2].first
 
revision.added_participants = part[0] || []
revision.removed_participants = part[1] || []
 
@wave.participants += revision.added_participants
@wave.participants -= revision.removed_participants
 
if part[2]
part = part[2].first[1].first[0]
revision.message = part.select{|thing|thing.is_a? Hash}.last[1].first
end
 
@wave.revisions << revision
end
  end
 
end