torchat 0.0.1.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/README.md +43 -0
  2. data/bin/torchatd +537 -0
  3. data/doc/protocol/broadcast.md +26 -0
  4. data/doc/protocol/groupchat.md +140 -0
  5. data/doc/protocol/latency.md +30 -0
  6. data/doc/protocol/standard.md +279 -0
  7. data/doc/protocol/typing.md +41 -0
  8. data/etc/torchat.yml +12 -0
  9. data/lib/torchat.rb +239 -0
  10. data/lib/torchat/protocol.rb +256 -0
  11. data/lib/torchat/protocol/broadcast.rb +40 -0
  12. data/lib/torchat/protocol/groupchat.rb +197 -0
  13. data/lib/torchat/protocol/latency.rb +44 -0
  14. data/lib/torchat/protocol/standard.rb +367 -0
  15. data/lib/torchat/protocol/typing.rb +36 -0
  16. data/lib/torchat/session.rb +603 -0
  17. data/lib/torchat/session/broadcast/message.rb +50 -0
  18. data/lib/torchat/session/broadcasts.rb +72 -0
  19. data/lib/torchat/session/buddies.rb +152 -0
  20. data/lib/torchat/session/buddy.rb +343 -0
  21. data/lib/torchat/session/buddy/joined_group_chat.rb +42 -0
  22. data/lib/torchat/session/buddy/joined_group_chats.rb +46 -0
  23. data/lib/torchat/session/buddy/latency.rb +54 -0
  24. data/lib/torchat/session/event.rb +79 -0
  25. data/lib/torchat/session/file_transfer.rb +173 -0
  26. data/lib/torchat/session/file_transfer/block.rb +51 -0
  27. data/lib/torchat/session/file_transfers.rb +89 -0
  28. data/lib/torchat/session/group_chat.rb +123 -0
  29. data/lib/torchat/session/group_chat/participant.rb +38 -0
  30. data/lib/torchat/session/group_chat/participants.rb +52 -0
  31. data/lib/torchat/session/group_chats.rb +74 -0
  32. data/lib/torchat/session/incoming.rb +187 -0
  33. data/lib/torchat/session/outgoing.rb +102 -0
  34. data/lib/torchat/tor.rb +107 -0
  35. data/lib/torchat/utils.rb +87 -0
  36. data/lib/torchat/version.rb +24 -0
  37. data/test/file_transfer/receiver.rb +41 -0
  38. data/test/file_transfer/sender.rb +45 -0
  39. data/test/group_chat/a.rb +37 -0
  40. data/test/group_chat/b.rb +37 -0
  41. data/test/group_chat/c.rb +57 -0
  42. data/torchat.gemspec +21 -0
  43. metadata +140 -0
@@ -0,0 +1,37 @@
1
+ #! /usr/bin/env ruby
2
+ require 'optparse'
3
+ require 'torchat'
4
+
5
+ options = {}
6
+
7
+ OptionParser.new do |o|
8
+ o.on '-p', '--profile PROFILE', 'the profile name' do |name|
9
+ options[:profile] = name
10
+ end
11
+ end.parse!
12
+
13
+ EM.run {
14
+ Torchat.profile(options[:profile]).start {|s|
15
+ s.when :connect_to do |e|
16
+ Torchat.debug "connecting to #{e.address}:#{e.port}"
17
+ end
18
+
19
+ s.on :connect_failure do |e|
20
+ Torchat.debug "#{e.buddy.id} failed to connect"
21
+ end
22
+
23
+ s.on :connect do |e|
24
+ Torchat.debug "#{e.buddy.id} connected"
25
+ end
26
+
27
+ s.on :verify do |e|
28
+ Torchat.debug "#{e.buddy.id} has been verified"
29
+ end
30
+
31
+ s.on :disconnect do |e|
32
+ Torchat.debug "#{e.buddy.id} disconnected"
33
+ end
34
+
35
+ s.online!
36
+ }
37
+ }
@@ -0,0 +1,57 @@
1
+ #! /usr/bin/env ruby
2
+ require 'optparse'
3
+ require 'torchat'
4
+
5
+ options = {}
6
+
7
+ OptionParser.new do |o|
8
+ o.on '-p', '--profile PROFILE', 'the profile name' do |name|
9
+ options[:profile] = name
10
+ end
11
+
12
+ o.on '-i', '--invite NAME...', Array, 'list of names to invite' do |name|
13
+ options[:invite] = name
14
+ end
15
+ end.parse!
16
+
17
+ EM.run {
18
+ Torchat.profile(options[:profile]).start {|s|
19
+ s.when :connect_to do |e|
20
+ Torchat.debug "connecting to #{e.address}:#{e.port}"
21
+ end
22
+
23
+ s.on :connect_failure do |e|
24
+ Torchat.debug "#{e.buddy.id} failed to connect"
25
+ end
26
+
27
+ s.on :connect do |e|
28
+ Torchat.debug "#{e.buddy.id} connected"
29
+ end
30
+
31
+ s.on :verify do |e|
32
+ Torchat.debug "#{e.buddy.id} has been verified"
33
+ end
34
+
35
+ s.on :disconnect do |e|
36
+ Torchat.debug "#{e.buddy.id} disconnected"
37
+ end
38
+
39
+ s.group_chats.create.tap {|gc|
40
+ gc.on :group_chat_join do |e|
41
+ gc.send_message "yo #{e.buddy.id}"
42
+
43
+ s.set_interval 10 do
44
+ gc.send_message '^_^'
45
+ end
46
+ end
47
+
48
+ options[:invite].each {|id|
49
+ s.buddies.add_temporary(id).on :ready do |e|
50
+ gc.invite(e.buddy)
51
+ end
52
+ }
53
+ }
54
+
55
+ s.online!
56
+ }
57
+ }
@@ -0,0 +1,21 @@
1
+ Kernel.load 'lib/torchat/version.rb'
2
+
3
+ Gem::Specification.new {|s|
4
+ s.name = 'torchat'
5
+ s.version = Torchat.version
6
+ s.author = 'meh.'
7
+ s.email = 'meh@paranoici.org'
8
+ s.homepage = 'http://github.com/meh/ruby-torchat'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'Torchat implementation in Ruby, event-driven EventMachine based library.'
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.require_paths = ['lib']
16
+
17
+ s.add_dependency 'eventmachine', '>= 1.0.0.rc.4'
18
+ s.add_dependency 'em-socksify'
19
+
20
+ s.add_dependency 'iniparse'
21
+ }
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: torchat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.rc.1
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - meh.
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: eventmachine
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0.rc.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0.rc.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: em-socksify
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: iniparse
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description:
63
+ email: meh@paranoici.org
64
+ executables:
65
+ - torchatd
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - README.md
70
+ - bin/torchatd
71
+ - doc/protocol/broadcast.md
72
+ - doc/protocol/groupchat.md
73
+ - doc/protocol/latency.md
74
+ - doc/protocol/standard.md
75
+ - doc/protocol/typing.md
76
+ - etc/torchat.yml
77
+ - lib/torchat.rb
78
+ - lib/torchat/protocol.rb
79
+ - lib/torchat/protocol/broadcast.rb
80
+ - lib/torchat/protocol/groupchat.rb
81
+ - lib/torchat/protocol/latency.rb
82
+ - lib/torchat/protocol/standard.rb
83
+ - lib/torchat/protocol/typing.rb
84
+ - lib/torchat/session.rb
85
+ - lib/torchat/session/broadcast/message.rb
86
+ - lib/torchat/session/broadcasts.rb
87
+ - lib/torchat/session/buddies.rb
88
+ - lib/torchat/session/buddy.rb
89
+ - lib/torchat/session/buddy/joined_group_chat.rb
90
+ - lib/torchat/session/buddy/joined_group_chats.rb
91
+ - lib/torchat/session/buddy/latency.rb
92
+ - lib/torchat/session/event.rb
93
+ - lib/torchat/session/file_transfer.rb
94
+ - lib/torchat/session/file_transfer/block.rb
95
+ - lib/torchat/session/file_transfers.rb
96
+ - lib/torchat/session/group_chat.rb
97
+ - lib/torchat/session/group_chat/participant.rb
98
+ - lib/torchat/session/group_chat/participants.rb
99
+ - lib/torchat/session/group_chats.rb
100
+ - lib/torchat/session/incoming.rb
101
+ - lib/torchat/session/outgoing.rb
102
+ - lib/torchat/tor.rb
103
+ - lib/torchat/utils.rb
104
+ - lib/torchat/version.rb
105
+ - test/file_transfer/receiver.rb
106
+ - test/file_transfer/sender.rb
107
+ - test/group_chat/a.rb
108
+ - test/group_chat/b.rb
109
+ - test/group_chat/c.rb
110
+ - torchat.gemspec
111
+ homepage: http://github.com/meh/ruby-torchat
112
+ licenses: []
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ! '>'
127
+ - !ruby/object:Gem::Version
128
+ version: 1.3.1
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 1.8.24
132
+ signing_key:
133
+ specification_version: 3
134
+ summary: Torchat implementation in Ruby, event-driven EventMachine based library.
135
+ test_files:
136
+ - test/file_transfer/receiver.rb
137
+ - test/file_transfer/sender.rb
138
+ - test/group_chat/a.rb
139
+ - test/group_chat/b.rb
140
+ - test/group_chat/c.rb