jschat 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/MIT-LICENSE +23 -0
  2. data/README.textile +71 -0
  3. data/bin/jschat-client +3 -0
  4. data/bin/jschat-server +18 -0
  5. data/bin/jschat-web +7 -0
  6. data/lib/jschat/client.rb +745 -0
  7. data/lib/jschat/errors.rb +41 -0
  8. data/lib/jschat/flood_protection.rb +39 -0
  9. data/lib/jschat/http/config/sprockets.yml +7 -0
  10. data/lib/jschat/http/config.ru +12 -0
  11. data/lib/jschat/http/jschat.rb +264 -0
  12. data/lib/jschat/http/public/favicon.ico +0 -0
  13. data/lib/jschat/http/public/images/emoticons/angry.gif +0 -0
  14. data/lib/jschat/http/public/images/emoticons/arr.gif +0 -0
  15. data/lib/jschat/http/public/images/emoticons/blink.gif +0 -0
  16. data/lib/jschat/http/public/images/emoticons/blush.gif +0 -0
  17. data/lib/jschat/http/public/images/emoticons/brucelee.gif +0 -0
  18. data/lib/jschat/http/public/images/emoticons/btw.gif +0 -0
  19. data/lib/jschat/http/public/images/emoticons/chuckle.gif +0 -0
  20. data/lib/jschat/http/public/images/emoticons/clap.gif +0 -0
  21. data/lib/jschat/http/public/images/emoticons/cool.gif +0 -0
  22. data/lib/jschat/http/public/images/emoticons/drool.gif +0 -0
  23. data/lib/jschat/http/public/images/emoticons/drunk.gif +0 -0
  24. data/lib/jschat/http/public/images/emoticons/dry.gif +0 -0
  25. data/lib/jschat/http/public/images/emoticons/eek.gif +0 -0
  26. data/lib/jschat/http/public/images/emoticons/flex.gif +0 -0
  27. data/lib/jschat/http/public/images/emoticons/happy.gif +0 -0
  28. data/lib/jschat/http/public/images/emoticons/holmes.gif +0 -0
  29. data/lib/jschat/http/public/images/emoticons/huh.gif +0 -0
  30. data/lib/jschat/http/public/images/emoticons/laugh.gif +0 -0
  31. data/lib/jschat/http/public/images/emoticons/lol.gif +0 -0
  32. data/lib/jschat/http/public/images/emoticons/mad.gif +0 -0
  33. data/lib/jschat/http/public/images/emoticons/mellow.gif +0 -0
  34. data/lib/jschat/http/public/images/emoticons/noclue.gif +0 -0
  35. data/lib/jschat/http/public/images/emoticons/oh.gif +0 -0
  36. data/lib/jschat/http/public/images/emoticons/ohmy.gif +0 -0
  37. data/lib/jschat/http/public/images/emoticons/ph34r.gif +0 -0
  38. data/lib/jschat/http/public/images/emoticons/pimp.gif +0 -0
  39. data/lib/jschat/http/public/images/emoticons/punch.gif +0 -0
  40. data/lib/jschat/http/public/images/emoticons/realmad.gif +0 -0
  41. data/lib/jschat/http/public/images/emoticons/rock.gif +0 -0
  42. data/lib/jschat/http/public/images/emoticons/rofl.gif +0 -0
  43. data/lib/jschat/http/public/images/emoticons/rolleyes.gif +0 -0
  44. data/lib/jschat/http/public/images/emoticons/sad.gif +0 -0
  45. data/lib/jschat/http/public/images/emoticons/scratch.gif +0 -0
  46. data/lib/jschat/http/public/images/emoticons/shifty.gif +0 -0
  47. data/lib/jschat/http/public/images/emoticons/shock.gif +0 -0
  48. data/lib/jschat/http/public/images/emoticons/shrug.gif +0 -0
  49. data/lib/jschat/http/public/images/emoticons/sleep.gif +0 -0
  50. data/lib/jschat/http/public/images/emoticons/sleeping.gif +0 -0
  51. data/lib/jschat/http/public/images/emoticons/smile.gif +0 -0
  52. data/lib/jschat/http/public/images/emoticons/suicide.gif +0 -0
  53. data/lib/jschat/http/public/images/emoticons/sweat.gif +0 -0
  54. data/lib/jschat/http/public/images/emoticons/thumbs.gif +0 -0
  55. data/lib/jschat/http/public/images/emoticons/tongue.gif +0 -0
  56. data/lib/jschat/http/public/images/emoticons/unsure.gif +0 -0
  57. data/lib/jschat/http/public/images/emoticons/w00t.gif +0 -0
  58. data/lib/jschat/http/public/images/emoticons/wacko.gif +0 -0
  59. data/lib/jschat/http/public/images/emoticons/whistling.gif +0 -0
  60. data/lib/jschat/http/public/images/emoticons/wink.gif +0 -0
  61. data/lib/jschat/http/public/images/emoticons/worship.gif +0 -0
  62. data/lib/jschat/http/public/images/emoticons/yucky.gif +0 -0
  63. data/lib/jschat/http/public/images/jschat.gif +0 -0
  64. data/lib/jschat/http/public/images/shadow.png +0 -0
  65. data/lib/jschat/http/public/javascripts/app/controllers/chat_controller.js +191 -0
  66. data/lib/jschat/http/public/javascripts/app/controllers/signon_controller.js +56 -0
  67. data/lib/jschat/http/public/javascripts/app/helpers/emote_helper.js +23 -0
  68. data/lib/jschat/http/public/javascripts/app/helpers/form_helpers.js +37 -0
  69. data/lib/jschat/http/public/javascripts/app/helpers/link_helper.js +47 -0
  70. data/lib/jschat/http/public/javascripts/app/helpers/page_helper.js +27 -0
  71. data/lib/jschat/http/public/javascripts/app/helpers/text_helper.js +92 -0
  72. data/lib/jschat/http/public/javascripts/app/lib/split.js +78 -0
  73. data/lib/jschat/http/public/javascripts/app/models/cookie.js +27 -0
  74. data/lib/jschat/http/public/javascripts/app/protocol/change.js +15 -0
  75. data/lib/jschat/http/public/javascripts/app/protocol/chat_request.js +13 -0
  76. data/lib/jschat/http/public/javascripts/app/protocol/display.js +147 -0
  77. data/lib/jschat/http/public/javascripts/app/ui/commands.js +55 -0
  78. data/lib/jschat/http/public/javascripts/app/ui/tab_completion.js +122 -0
  79. data/lib/jschat/http/public/javascripts/init.js +19 -0
  80. data/lib/jschat/http/public/stylesheets/iphone.css +3 -0
  81. data/lib/jschat/http/public/stylesheets/screen.css +68 -0
  82. data/lib/jschat/http/script/sprockets.rb +14 -0
  83. data/lib/jschat/http/tmp/restart.txt +0 -0
  84. data/lib/jschat/http/views/index.erb +23 -0
  85. data/lib/jschat/http/views/iphone.erb +29 -0
  86. data/lib/jschat/http/views/layout.erb +29 -0
  87. data/lib/jschat/http/views/message_form.erb +15 -0
  88. data/lib/jschat/server.rb +503 -0
  89. data/test/server_test.rb +175 -0
  90. data/test/stateless_test.rb +33 -0
  91. data/test/test_helper.rb +61 -0
  92. metadata +223 -0
@@ -0,0 +1,61 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'eventmachine'
4
+ require 'json'
5
+ require File.join(File.dirname(__FILE__), '../', 'jschat.rb')
6
+
7
+ ServerConfig = {
8
+ :max_message_length => 500
9
+ }
10
+
11
+ class JsChat::Room
12
+ def self.reset
13
+ @@rooms = nil
14
+ end
15
+ end
16
+
17
+ module JsChatHelpers
18
+ def identify_as(name, channel = nil)
19
+ if @cookie
20
+ result = @jschat.receive_line({ 'identify' => name, :cookie => @cookie }.to_json)
21
+ result = @jschat.receive_line({ 'join' => channel, :cookie => @cookie }.to_json) if channel
22
+ else
23
+ result = @jschat.receive_line({ 'identify' => name }.to_json)
24
+ result = @jschat.receive_line({ 'join' => channel }.to_json) if channel
25
+ end
26
+ result
27
+ end
28
+
29
+ def send_to_jschat(h, parse = true)
30
+ response = @jschat.receive_line(h.to_json)
31
+ parse ? JSON.parse(response) : response
32
+ end
33
+ end
34
+
35
+ class JsChatMock
36
+ include JsChat
37
+
38
+ def get_remote_ip
39
+ ''
40
+ end
41
+
42
+ def send_data(data)
43
+ data
44
+ end
45
+
46
+ def reset
47
+ @@users = nil
48
+ @user = nil
49
+ Room.reset
50
+ end
51
+
52
+ # Helper for testing
53
+ def add_user(name, room_name)
54
+ room = Room.find_or_create room_name
55
+ user = User.new self
56
+ user.name = name
57
+ user.rooms << room
58
+ @@users << user
59
+ room.users << user
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,223 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jschat
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
10
+ platform: ruby
11
+ authors:
12
+ - Alex R. Young
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-03-21 00:00:00 +00:00
18
+ default_executable: bin/jschat-server
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: sinatra
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 9
30
+ - 4
31
+ version: 0.9.4
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: json
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 1
44
+ - 9
45
+ version: 1.1.9
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: sprockets
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 0
58
+ - 2
59
+ version: 1.0.2
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: eventmachine
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ - 12
72
+ - 8
73
+ version: 0.12.8
74
+ type: :runtime
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: ncurses
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ - 9
86
+ - 1
87
+ version: 0.9.1
88
+ type: :runtime
89
+ version_requirements: *id005
90
+ description: JsChat is a JSON-based web and console chat app.
91
+ email: alex@alexyoung.org
92
+ executables:
93
+ - jschat-server
94
+ - jschat-client
95
+ - jschat-web
96
+ extensions: []
97
+
98
+ extra_rdoc_files: []
99
+
100
+ files:
101
+ - bin/jschat-client
102
+ - bin/jschat-server
103
+ - bin/jschat-web
104
+ - lib/jschat/client.rb
105
+ - lib/jschat/errors.rb
106
+ - lib/jschat/flood_protection.rb
107
+ - lib/jschat/http/config/sprockets.yml
108
+ - lib/jschat/http/config.ru
109
+ - lib/jschat/http/jschat.rb
110
+ - lib/jschat/http/public/favicon.ico
111
+ - lib/jschat/http/public/images/emoticons/angry.gif
112
+ - lib/jschat/http/public/images/emoticons/arr.gif
113
+ - lib/jschat/http/public/images/emoticons/blink.gif
114
+ - lib/jschat/http/public/images/emoticons/blush.gif
115
+ - lib/jschat/http/public/images/emoticons/brucelee.gif
116
+ - lib/jschat/http/public/images/emoticons/btw.gif
117
+ - lib/jschat/http/public/images/emoticons/chuckle.gif
118
+ - lib/jschat/http/public/images/emoticons/clap.gif
119
+ - lib/jschat/http/public/images/emoticons/cool.gif
120
+ - lib/jschat/http/public/images/emoticons/drool.gif
121
+ - lib/jschat/http/public/images/emoticons/drunk.gif
122
+ - lib/jschat/http/public/images/emoticons/dry.gif
123
+ - lib/jschat/http/public/images/emoticons/eek.gif
124
+ - lib/jschat/http/public/images/emoticons/flex.gif
125
+ - lib/jschat/http/public/images/emoticons/happy.gif
126
+ - lib/jschat/http/public/images/emoticons/holmes.gif
127
+ - lib/jschat/http/public/images/emoticons/huh.gif
128
+ - lib/jschat/http/public/images/emoticons/laugh.gif
129
+ - lib/jschat/http/public/images/emoticons/lol.gif
130
+ - lib/jschat/http/public/images/emoticons/mad.gif
131
+ - lib/jschat/http/public/images/emoticons/mellow.gif
132
+ - lib/jschat/http/public/images/emoticons/noclue.gif
133
+ - lib/jschat/http/public/images/emoticons/oh.gif
134
+ - lib/jschat/http/public/images/emoticons/ohmy.gif
135
+ - lib/jschat/http/public/images/emoticons/ph34r.gif
136
+ - lib/jschat/http/public/images/emoticons/pimp.gif
137
+ - lib/jschat/http/public/images/emoticons/punch.gif
138
+ - lib/jschat/http/public/images/emoticons/realmad.gif
139
+ - lib/jschat/http/public/images/emoticons/rock.gif
140
+ - lib/jschat/http/public/images/emoticons/rofl.gif
141
+ - lib/jschat/http/public/images/emoticons/rolleyes.gif
142
+ - lib/jschat/http/public/images/emoticons/sad.gif
143
+ - lib/jschat/http/public/images/emoticons/scratch.gif
144
+ - lib/jschat/http/public/images/emoticons/shifty.gif
145
+ - lib/jschat/http/public/images/emoticons/shock.gif
146
+ - lib/jschat/http/public/images/emoticons/shrug.gif
147
+ - lib/jschat/http/public/images/emoticons/sleep.gif
148
+ - lib/jschat/http/public/images/emoticons/sleeping.gif
149
+ - lib/jschat/http/public/images/emoticons/smile.gif
150
+ - lib/jschat/http/public/images/emoticons/suicide.gif
151
+ - lib/jschat/http/public/images/emoticons/sweat.gif
152
+ - lib/jschat/http/public/images/emoticons/thumbs.gif
153
+ - lib/jschat/http/public/images/emoticons/tongue.gif
154
+ - lib/jschat/http/public/images/emoticons/unsure.gif
155
+ - lib/jschat/http/public/images/emoticons/w00t.gif
156
+ - lib/jschat/http/public/images/emoticons/wacko.gif
157
+ - lib/jschat/http/public/images/emoticons/whistling.gif
158
+ - lib/jschat/http/public/images/emoticons/wink.gif
159
+ - lib/jschat/http/public/images/emoticons/worship.gif
160
+ - lib/jschat/http/public/images/emoticons/yucky.gif
161
+ - lib/jschat/http/public/images/jschat.gif
162
+ - lib/jschat/http/public/images/shadow.png
163
+ - lib/jschat/http/public/javascripts/app/controllers/chat_controller.js
164
+ - lib/jschat/http/public/javascripts/app/controllers/signon_controller.js
165
+ - lib/jschat/http/public/javascripts/app/helpers/emote_helper.js
166
+ - lib/jschat/http/public/javascripts/app/helpers/form_helpers.js
167
+ - lib/jschat/http/public/javascripts/app/helpers/link_helper.js
168
+ - lib/jschat/http/public/javascripts/app/helpers/page_helper.js
169
+ - lib/jschat/http/public/javascripts/app/helpers/text_helper.js
170
+ - lib/jschat/http/public/javascripts/app/lib/split.js
171
+ - lib/jschat/http/public/javascripts/app/models/cookie.js
172
+ - lib/jschat/http/public/javascripts/app/protocol/change.js
173
+ - lib/jschat/http/public/javascripts/app/protocol/chat_request.js
174
+ - lib/jschat/http/public/javascripts/app/protocol/display.js
175
+ - lib/jschat/http/public/javascripts/app/ui/commands.js
176
+ - lib/jschat/http/public/javascripts/app/ui/tab_completion.js
177
+ - lib/jschat/http/public/javascripts/init.js
178
+ - lib/jschat/http/public/stylesheets/iphone.css
179
+ - lib/jschat/http/public/stylesheets/screen.css
180
+ - lib/jschat/http/script/sprockets.rb
181
+ - lib/jschat/http/tmp/restart.txt
182
+ - lib/jschat/http/views/index.erb
183
+ - lib/jschat/http/views/iphone.erb
184
+ - lib/jschat/http/views/layout.erb
185
+ - lib/jschat/http/views/message_form.erb
186
+ - lib/jschat/server.rb
187
+ - test/server_test.rb
188
+ - test/stateless_test.rb
189
+ - test/test_helper.rb
190
+ - README.textile
191
+ - MIT-LICENSE
192
+ has_rdoc: false
193
+ homepage: http://github.com/alexyoung/jschat
194
+ licenses: []
195
+
196
+ post_install_message:
197
+ rdoc_options: []
198
+
199
+ require_paths:
200
+ - lib
201
+ required_ruby_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ segments:
206
+ - 0
207
+ version: "0"
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ segments:
213
+ - 0
214
+ version: "0"
215
+ requirements: []
216
+
217
+ rubyforge_project:
218
+ rubygems_version: 1.3.6
219
+ signing_key:
220
+ specification_version: 3
221
+ summary: JsChat features a chat server, client and web app.
222
+ test_files: []
223
+