tinder 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg
2
+ rdoc
3
+ test/remote/credentials.rb
data/README.txt CHANGED
@@ -18,24 +18,29 @@ Tinder is a library for interfacing with Campfire, the chat application from 37S
18
18
 
19
19
  See the RDoc for more details.
20
20
 
21
- == Requirements
22
-
23
- * Active Support
24
- gem install activesupport
25
- * Hpricot
26
- gem install hpricot
27
-
28
21
  == Installation
29
22
 
30
23
  Tinder can be installed as a gem or a Rails plugin:
31
24
 
32
25
  gem install tinder
33
26
 
34
- script/plugin install http://source.collectiveidea.com/public/tinder/trunk
27
+ script/plugin install git://github.com/collectiveidea/tinder.git
35
28
 
36
- == Development
29
+ == How to contribute
30
+
31
+ If you find what looks like a bug:
32
+
33
+ 1. Check the GitHub issue tracker to see if anyone else has had the same issue.
34
+ http://github.com/collectiveidea/tinder/issues/
35
+ 2. If you don't see anything, create an issue with information on how to reproduce it.
36
+
37
+ If you want to contribute an enhancement or a fix:
37
38
 
38
- The source for Tinder is available at http://source.collectiveidea.com/public/tinder/trunk. Development can be followed at http://opensoul.org/tags/tinder. Contributions are welcome!
39
+ 1. Fork the project on github.
40
+ http://github.com/collectiveidea/tinder
41
+ 2. Make your changes with tests.
42
+ 3. Commit the changes without making changes to the Rakefile, VERSION, or any other files that aren't related to your enhancement or fix
43
+ 4. Send a pull request.
39
44
 
40
45
  == ToDo
41
46
 
data/Rakefile CHANGED
@@ -1,41 +1,68 @@
1
- require 'rubygems'
2
- require 'hoe'
3
1
  begin
4
- require 'spec/rake/spectask'
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gem|
4
+ gem.name = "tinder"
5
+ gem.summary = "An (unofficial) Campfire API"
6
+ gem.description = "An API for interfacing with Campfire, the 37Signals chat application."
7
+ gem.authors = ['Brandon Keepers']
8
+ gem.email = 'brandon@opensoul.org'
9
+ gem.homepage = 'http://github.com/collectiveidea/tinder'
10
+ gem.rubyforge_project = "tinder"
11
+ gem.add_dependency "activesupport"
12
+ gem.add_dependency "hpricot"
13
+ gem.add_dependency "mime-types"
14
+ gem.add_development_dependency "rspec"
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ Jeweler::RubyforgeTasks.new do |rubyforge|
18
+ rubyforge.doc_task = "rdoc"
19
+ end
5
20
  rescue LoadError
6
- puts 'To use rspec for testing you must install rspec gem:'
7
- puts '$ sudo gem install rspec'
8
- exit
21
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
9
22
  end
10
- require File.join(File.dirname(__FILE__), 'lib', 'tinder', 'version')
11
23
 
12
- # RDOC_OPTS = ['--quiet', '--title', "Tinder",
13
- # "--opname", "index.html",
14
- # "--line-numbers",
15
- # "--main", "README",
16
- # "--inline-source"]
17
- #
18
- # Generate all the Rake tasks
24
+ require 'rake/testtask'
25
+ Rake::TestTask.new(:test) do |test|
26
+ test.libs << 'lib' << 'test'
27
+ test.pattern = 'test/**/*_test.rb'
28
+ test.verbose = true
29
+ end
30
+
31
+ begin
32
+ require 'rcov/rcovtask'
33
+ Rcov::RcovTask.new do |test|
34
+ test.libs << 'test'
35
+ test.pattern = 'test/**/*_test.rb'
36
+ test.verbose = true
37
+ end
38
+ rescue LoadError
39
+ task :rcov do
40
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
41
+ end
42
+ end
43
+
44
+ task :test => :check_dependencies
45
+
46
+ require 'rake/rdoctask'
47
+ Rake::RDocTask.new do |rdoc|
48
+ if File.exist?('VERSION')
49
+ version = File.read('VERSION')
50
+ else
51
+ version = ""
52
+ end
19
53
 
20
- hoe = Hoe.new('tinder', ENV['VERSION'] || Tinder::VERSION::STRING) do |p|
21
- p.rubyforge_name = 'tinder'
22
- p.summary = "An (unofficial) Campfire API"
23
- p.description = "An API for interfacing with Campfire, the 37Signals chat application."
24
- p.author = 'Brandon Keepers'
25
- p.email = 'brandon@opensoul.org'
26
- p.url = 'http://tinder.rubyforge.org'
27
- p.test_globs = ["test/**/*_test.rb"]
28
- p.changes = p.paragraphs_of('CHANGELOG.txt', 0..1).join("\n\n")
29
- p.extra_deps << ['activesupport']
30
- p.extra_deps << ['hpricot']
31
- p.extra_deps << ['mime-types']
54
+ rdoc.rdoc_dir = 'rdoc'
55
+ rdoc.title = "tinder #{version}"
56
+ rdoc.rdoc_files.include('README*')
57
+ rdoc.rdoc_files.include('lib/**/*.rb')
32
58
  end
33
59
 
60
+ require 'spec/rake/spectask'
34
61
  desc "Run the specs under spec"
35
62
  Spec::Rake::SpecTask.new do |t|
36
63
  t.spec_opts = ['--options', "spec/spec.opts"]
37
64
  t.spec_files = FileList['spec/**/*_spec.rb']
38
65
  end
39
66
 
40
- desc "Default task is to run specs"
41
- task :default => :spec
67
+ desc "Run tests"
68
+ task :default => [:spec, :test]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.2.2
data/lib/tinder.rb CHANGED
@@ -6,7 +6,9 @@ require 'net/https'
6
6
  require 'open-uri'
7
7
  require 'hpricot'
8
8
 
9
- Dir[File.join(File.dirname(__FILE__), 'tinder/**/*.rb')].sort.each { |lib| require lib }
9
+ require 'tinder/multipart'
10
+ require 'tinder/campfire'
11
+ require 'tinder/room'
10
12
 
11
13
  module Tinder
12
14
  class Error < StandardError; end
@@ -153,10 +153,10 @@ module Tinder
153
153
 
154
154
  def prepare_request(request, options = {})
155
155
  returning request do
156
- request.add_field 'User-Agent', "Tinder/#{Tinder::VERSION::STRING} (http://tinder.rubyforge.org)"
156
+ request.add_field 'User-Agent', "Tinder (http://tinder.rubyforge.org)"
157
157
  request.add_field 'Cookie', @cookie if @cookie
158
+ request.add_field 'X-Requested-With', 'XMLHttpRequest'
158
159
  if options[:ajax]
159
- request.add_field 'X-Requested-With', 'XMLHttpRequest'
160
160
  request.add_field 'X-Prototype-Version', '1.5.1.1'
161
161
  end
162
162
  if options[:multipart]
data/site/index.html ADDED
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+ <title>Tinder</title>
8
+ <link rel="stylesheet" type="text/css" href="http://opensoul.org/stylesheets/code.css" />
9
+ <link rel="stylesheet" type="text/css" href="stylesheets/style.css" />
10
+ <link href="http://opensoul.org/stylesheets/ci.css" rel="stylesheet" type="text/css" />
11
+ <script src="http://opensoul.org/javascripts/code_highlighter.js" type="text/javascript"></script>
12
+ <script src="http://opensoul.org/javascripts/ruby.js" type="text/javascript"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div id="collectiveidea">
17
+ <a href="http://collectiveidea.com"><img src="http://opensoul.org/images/header_logo.gif" alt="Collective Idea" class="logo" width="17" height="22" /></a>
18
+ <ul class="links">
19
+ <li><a href="http://daniel.collectiveidea.com/blog">Daniel</a></li>
20
+ <li><a href="http://opensoul.org">Brandon</a></li>
21
+ <li class="name"><a href="http://collectiveidea.com"><img src="http://opensoul.org/images/header_collectiveidea.gif" alt="Collective Idea" width="123" height="21" /></a></li>
22
+ </ul>
23
+ </div>
24
+ <div id="main">
25
+ <div id="header">
26
+ <h1><a href="/">Tinder</a></h1>
27
+ <p>Getting the campfire started</p>
28
+ <ul id="nav">
29
+ <li><a href="tinder">API Docs</a></li>
30
+ <li><a href="http://rubyforge.org/projects/tinder">RubyForge</a></li>
31
+ <li><a href="http://opensoul.org/tags/tinder">Blog</a></li>
32
+ </ul>
33
+ </div>
34
+ <div id="content">
35
+ <p>Tinder is an API for interfacing with <a href="http://campfirenow.com">Campfire</a>, the 37Signals chat application.</p>
36
+ <h2>Example</h2>
37
+
38
+ <pre><code class="ruby">campfire = Tinder::Campfire.new 'mysubdomain'
39
+ campfire.login 'myemail@example.com', 'mypassword'</code></pre>
40
+
41
+ <h3>Create, find and destroy rooms</h3>
42
+ <pre><code class="ruby">room = campfire.create_room 'New Room', 'My new campfire room to test tinder'
43
+ room = campfire.find_room_by_name 'Other Room'
44
+ room.destroy</code></pre>
45
+
46
+ <h3>Speak and Paste</h3>
47
+ <pre><code class="ruby">room.speak 'Hello world!'
48
+ room.paste File.read(&quot;path/to/your/file.txt&quot;)</code></pre>
49
+
50
+ <h3>Listening</h3>
51
+ <pre><code class="ruby">room.listen
52
+ #=&gt; [{:person=&gt;&quot;Brandon&quot;, :message=&gt;&quot;I'm getting very sleepy&quot;, :user_id=&gt;&quot;148583&quot;, :id=&gt;&quot;16434003&quot;}]
53
+
54
+ # or in block form
55
+ room.listen do |m|
56
+ room.speak 'Welcome!' if m[:message] == /hello/
57
+ end</code></pre>
58
+
59
+ <h3>Guest Access</h3>
60
+ <pre><code class="ruby">room.toggle_guest_access
61
+ room.guest_url #=> http://mysubdomain.campfirenow.com/11111
62
+ room.guest_invite_code #=> 11111</code></pre>
63
+
64
+ <h3>Change the name and topic</h3>
65
+ <pre><code class="ruby">room.name = 'Tinder Demo'
66
+ room.topic = 'Showing how to change the room name and topic with tinder…'</code></pre>
67
+
68
+ <h3>Users</h3>
69
+ <pre><code class="ruby">room.users
70
+ campfire.users # users in all rooms</code></pre>
71
+
72
+ <h3>Transcripts</h3>
73
+ <pre><code class="ruby">transcript = room.transcript(room.available_transcripts.first)
74
+ #=&gt; [{:message=&gt;&quot;foobar!&quot;, :user_id=&gt;&quot;99999&quot;, :person=&gt;&quot;Brandon&quot;, :id=&gt;&quot;18659245&quot;, :timestamp=&gt;Tue May 05 07:15:00 -0700 2009}]
75
+ </code></pre>
76
+
77
+ <p>See the <a href="tinder">API documentation</a> for more details.</p>
78
+
79
+ <h2>Installation</h2>
80
+
81
+ <p>Tinder can be installed as a gem or a Rails plugin. Install the gem by executing:</p>
82
+
83
+ <pre>gem install tinder</pre>
84
+
85
+ <p>Or, download it from <a href="http://rubyforge.org/frs/?group_id=2922">RubyForge</a>.</p>
86
+
87
+ <h2>Source</h2>
88
+
89
+ <p>Contributions are welcome and appreciated! The source is available from:</p>
90
+
91
+ <pre>http://github.com/collectiveidea/tinder</pre>
92
+ </div>
93
+ </div>
94
+ <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
95
+ </script>
96
+ <script type="text/javascript">
97
+ _uacct = "UA-194397-8";
98
+ urchinTracker();
99
+ </script>
100
+ </body>
101
+ </html>
@@ -0,0 +1,77 @@
1
+ body {
2
+ font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
3
+ font-size: 76%;
4
+ background: #2A2A2A;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ #collectiveidea {
10
+ border-bottom: 1px solid #444;
11
+ }
12
+
13
+ a {
14
+ color: #2D5385;
15
+ }
16
+
17
+ #main {
18
+ background-color: #FFF;
19
+ width: 700px;
20
+ margin: 0 auto;
21
+ border: 5px #CCC;
22
+ border-left-style: solid;
23
+ border-right-style: solid;
24
+ padding: 0 1em;
25
+ }
26
+
27
+ #header {
28
+ position: relative;
29
+ border-bottom: 1px solid #999;
30
+ padding: 1em;
31
+ }
32
+
33
+ #header h1 {
34
+ margin: 0;
35
+ padding: 0;
36
+ color: #2D5385;
37
+ }
38
+
39
+ #header h1 a {
40
+ text-decoration: none;
41
+ }
42
+
43
+ #header p {
44
+ margin: 0;
45
+ padding: 0;
46
+ font-size: 0.8em;
47
+ color: #999;
48
+ }
49
+
50
+ #nav {
51
+ list-style: none;
52
+ position: absolute;
53
+ right: 0;
54
+ top: 0.6em;
55
+ }
56
+ #nav li {
57
+ display: inline;
58
+ padding: 0 0.5em;
59
+ }
60
+
61
+ #content {
62
+ padding: 1em 0;
63
+ }
64
+
65
+ dl {
66
+ background-color: #DDD;
67
+ padding: 1em;
68
+ border: 1px solid #CCC;
69
+ }
70
+ dl .pronunciation {
71
+ color: #C00;
72
+ }
73
+ dl .description {
74
+ text-transform: uppercase;
75
+ font-size: 0.8em;
76
+ font-family: fixed;
77
+ }
@@ -0,0 +1,225 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Preparing a campfire request" do
4
+ before do
5
+ @campfire = Tinder::Campfire.new("foobar")
6
+ @request = Net::HTTP::Get.new("does_not_matter")
7
+ end
8
+
9
+ def prepare_request
10
+ @campfire.send(:prepare_request, @request)
11
+ end
12
+
13
+ it "should return the request" do
14
+ prepare_request.should equal(@request)
15
+ end
16
+
17
+ it "should set the cookie" do
18
+ @campfire.instance_variable_set("@cookie", "foobar")
19
+ prepare_request['Cookie'].should == 'foobar'
20
+ end
21
+
22
+ it "should set the user agent" do
23
+ prepare_request['User-Agent'].should =~ /^Tinder/
24
+ end
25
+ end
26
+
27
+ # describe "Performing a campfire request" do
28
+ #
29
+ # before do
30
+ # @response = mock("response")
31
+ # Net::HTTP.any_instance.stubs(:request).returns(response)
32
+ # request = Net::HTTP::Get.new("does_not_matter")
33
+ # response.expects(:[]).with('set-cookie').and_return('foobar')
34
+ # @campfire.send(:perform_request) { request }
35
+ # end
36
+ #
37
+ # it "should set cookie" do
38
+ # @campfire.instance_variable_get("@cookie").should == 'foobar'
39
+ # end
40
+ #
41
+ # end
42
+
43
+ describe "Verifying a 200 response" do
44
+
45
+ before do
46
+ @campfire = Tinder::Campfire.new("foobar")
47
+ @response = mock("response")
48
+ @response.should_receive(:code).and_return(200)
49
+ end
50
+
51
+ it "should return true when expecting success" do
52
+ @campfire.send(:verify_response, @response, :success).should equal(true)
53
+ end
54
+
55
+ it "should return false when expecting a redirect" do
56
+ @campfire.send(:verify_response, @response, :redirect).should equal(false)
57
+ end
58
+
59
+ it "should return false when expecting a redirect to a specific path" do
60
+ @campfire.send(:verify_response, @response, :redirect_to => '/foobar').should equal(false)
61
+ end
62
+
63
+ end
64
+
65
+ describe "Verifying a 302 response" do
66
+
67
+ before do
68
+ @campfire = Tinder::Campfire.new("foobar")
69
+ @response = mock("response")
70
+ @response.should_receive(:code).and_return(302)
71
+ end
72
+
73
+ it "should return true when expecting redirect" do
74
+ @campfire.send(:verify_response, @response, :redirect).should equal(true)
75
+ end
76
+
77
+ it "should return false when expecting success" do
78
+ @campfire.send(:verify_response, @response, :success).should equal(false)
79
+ end
80
+
81
+ it "should return true when expecting a redirect to a specific path" do
82
+ @response.should_receive(:[]).with('location').and_return("/foobar")
83
+ @campfire.send(:verify_response, @response, :redirect_to => '/foobar').should equal(true)
84
+ end
85
+
86
+ it "should return false when redirecting to a different path than expected" do
87
+ @response.should_receive(:[]).with('location').and_return("/baz")
88
+ @campfire.send(:verify_response, @response, :redirect_to => '/foobar').should equal(false)
89
+ end
90
+
91
+ end
92
+
93
+ describe "A failed login" do
94
+
95
+ before do
96
+ @campfire = Tinder::Campfire.new 'foobar'
97
+ @response = mock("response")
98
+ @campfire.should_receive(:post).and_return(@response)
99
+ @response.should_receive(:code).and_return("302")
100
+ @response.should_receive(:[]).with("location").and_return("/login")
101
+ end
102
+
103
+ it "should raise an error" do
104
+ lambda do
105
+ @campfire.login "doesn't", "matter"
106
+ end.should raise_error(Tinder::Error)
107
+ end
108
+
109
+ it "should not set logged in status" do
110
+ @campfire.login 'foo', 'bar' rescue
111
+ @campfire.logged_in?.should equal(false)
112
+ end
113
+
114
+ end
115
+
116
+ describe "Accessing a room with guest access" do
117
+
118
+ before do
119
+ @room_id = 123
120
+ @campfire = Tinder::Campfire.new 'foobar'
121
+ @response = mock("response")
122
+ @campfire.stub!(:post).and_return(@response)
123
+ end
124
+
125
+ it "should return a room for the public room" do
126
+ @response.should_receive(:code).and_return(302)
127
+ @response.should_receive(:[]).with("location").and_return("/rooms/#{@room_id}")
128
+
129
+ room = @campfire.find_room_by_guest_hash "valid_hash", "John Doe"
130
+ room.should be_kind_of(Tinder::Room)
131
+ end
132
+
133
+ it "should raise an error if given an invalid room hash" do
134
+ @response.should_receive(:code).and_return(500)
135
+
136
+ room = @campfire.find_room_by_guest_hash "invalid_hash", "John Doe"
137
+ room.should be_nil
138
+ end
139
+
140
+ end
141
+
142
+ describe "Accessing a room" do
143
+
144
+ before do
145
+ @request = mock("request")
146
+ @response = mock("response")
147
+ Net::HTTP.stub!(:new).and_return(@request)
148
+ @request.stub!(:use_ssl=)
149
+ @request.stub!(:request).and_return(@response)
150
+ @response.stub!(:[]).and_return(true)
151
+ end
152
+
153
+ describe "when the room is full" do
154
+
155
+ before do
156
+ @html = File.read(File.dirname(__FILE__) + '/html/full_lobby.html')
157
+ @response.stub!(:body).and_return(@html)
158
+ @campfire = Tinder::Campfire.new 'foobar'
159
+ end
160
+
161
+ it "should return a room" do
162
+ @campfire.rooms.should_not be_empty
163
+ end
164
+
165
+ it "should find a room by name" do
166
+ @campfire.find_room_by_name("Just Fishin").class.should == Tinder::Room
167
+ end
168
+
169
+ end
170
+
171
+ describe "when the room is not full" do
172
+
173
+ before do
174
+ @html = File.read(File.dirname(__FILE__) + '/html/normal_lobby.html')
175
+ @response.stub!(:body).and_return(@html)
176
+ @campfire = Tinder::Campfire.new 'foobar'
177
+ end
178
+
179
+ it "should return a room" do
180
+ @campfire.rooms.should_not be_empty
181
+ end
182
+
183
+ it "should find a room by name" do
184
+ @campfire.find_room_by_name("Just Fishin").class.should == Tinder::Room
185
+ end
186
+ end
187
+
188
+ end
189
+
190
+ describe "Accessing a room's transcript" do
191
+
192
+ before do
193
+ @room = Tinder::Room.new nil, 42
194
+ @html = File.read(File.dirname(__FILE__) + '/html/transcript.html')
195
+ @response = mock("response")
196
+ @response.stub!(:body).and_return(@html)
197
+ @room.stub!(:get).with("room/42/transcript/2009/05/05").
198
+ and_return(@response)
199
+ require 'time'
200
+ @transcript = @room.transcript(Time.parse("2009-05-05"))
201
+ end
202
+
203
+ it "should return some messages" do
204
+ @transcript.should_not be_empty
205
+ end
206
+
207
+ describe "the first message" do
208
+ # This is a timestamp message
209
+ it "should include a timestamp" do
210
+ @transcript.first[:timestamp].should == Time.parse("2009-05-05 09:35")
211
+ end
212
+ end
213
+
214
+ describe "the second message" do
215
+ it "should include a timestamp" do
216
+ @transcript.second[:timestamp].should == Time.parse("2009-05-05 09:35")
217
+ end
218
+ end
219
+
220
+ describe "when entering the room" do
221
+ it "a transcript message should include the person who entered" do
222
+ @transcript.second[:person].should == "Marcel"
223
+ end
224
+ end
225
+ end
@@ -0,0 +1,198 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Chat rooms</title>
7
+ <link href="/stylesheets/screen.css?1224558404" media="all" rel="stylesheet" type="text/css" />
8
+ <!--[if lte IE 6]>
9
+ <style type="text/css">
10
+ @import url("/stylesheets/screen-ie.css?1224558404");
11
+ </style>
12
+ <![endif]-->
13
+ <!--[if IE 7]>
14
+ <style type="text/css">
15
+ @import url("/stylesheets/screen-ie-7.css?1224558404");
16
+ </style>
17
+ <![endif]-->
18
+
19
+ <link href="/stylesheets/print.css?1224558404" media="print" rel="stylesheet" type="text/css" />
20
+ <link href="/stylesheets/blue.css?1224558404" media="screen" rel="stylesheet" title="Theme" type="text/css" />
21
+ <script src="/javascripts/prototype.js?1224558404" type="text/javascript"></script>
22
+ <script src="/javascripts/effects.js?1224558404" type="text/javascript"></script>
23
+ <script src="/javascripts/application.js?1224558404" type="text/javascript"></script>
24
+ <script src="/javascripts/nubbins.js?1224558404" type="text/javascript"></script>
25
+ <script src="/javascripts/campfire.js?1224558404" type="text/javascript"></script>
26
+ <script src="/javascripts/javascript_flash_gateway.js?1224558404" type="text/javascript"></script>
27
+ </head>
28
+
29
+ <body class="lobby">
30
+
31
+
32
+
33
+
34
+ <div id="Header">
35
+ <div id="Tabs">
36
+ <ul id="MainTabs">
37
+ <li><a href="http://fish.campfirenow.com/" class="current">Lobby</a></li>
38
+
39
+
40
+
41
+ <li><a href="http://fish.campfirenow.com/room/17715" class="chat" id="room_tab-17715">Just Fishin</a></li>
42
+
43
+
44
+
45
+
46
+ <li><a href="http://fish.campfirenow.com/files+transcripts" class="" style="margin-left: 8px">Files, Transcripts &amp; Search</a></li>
47
+
48
+ <li style="float: right;" class="logout"><a href="http://fish.campfirenow.com/logout">Logout</a></li>
49
+ <li style="float: right" class="logout"><a href="/member/edit">My account</a></li>
50
+
51
+
52
+ </ul>
53
+ </div>
54
+ </div>
55
+
56
+
57
+ <div id="Wrapper">
58
+ <div id="Container">
59
+
60
+
61
+
62
+
63
+ <div class="Full">
64
+ <div class="col">
65
+
66
+ <div id="lobby">
67
+ <h1>
68
+ <span><a class="admin toggle show_hide_toggler_new_room" href="#" id="create_room_link" onclick="$('new_room').showHide.toggle(); return false;">Create a new room</a></span>
69
+ Chat rooms
70
+ </h1>
71
+
72
+ <div class="currentChatters">
73
+ 4 people currently chatting
74
+ <span>
75
+ <br />You're near your simultaneous chatter limit of 4.
76
+ Ask <a href="mailto:bob@billy.com">Billy Bob</a> to upgrade the account.
77
+ </span>
78
+
79
+ </div>
80
+ <div class="show_hide_wrapper"><div class=" showhide" id="new_room" style="display: none"><div class="basic_form_wrapper">
81
+ <div class="basic_form">
82
+ <div class="explanation">
83
+ <h3>Create a new room</h3>
84
+ <p>All chats take place in rooms. You can create as many rooms as you'd like.</p>
85
+ <p>Consider making rooms for client projects, general discussions, specific meetings/events, and more.</p>
86
+ <div class="spinner" id="new_room_spinner" style="display: none">&nbsp;</div>
87
+ </div>
88
+ <div id="new_room_form_errors"></div>
89
+ <div class="body">
90
+ <form action="http://fish.campfirenow.com/account/create/room?from=lobby" id="new_room_form" method="post" onsubmit="$(this).down('input[type=submit]').disable(); Element.hide('new_room_cancel_link'); new Ajax.Request('http://fish.campfirenow.com/account/create/room?from=lobby', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;"> <h3>Name the room</h3>
91
+ <p><input class="big expanded" id="room_name" name="room[name]" size="30" type="text" /></p>
92
+ <h3 style="font-weight: normal;">Optional: Give the room a topic or description</h3>
93
+ <p><textarea class="expanded" cols="40" id="room_topic" name="room[topic]" rows="20"></textarea></p>
94
+ <p class="submit"><input class="primary" name="commit" type="submit" value="Create the room" />
95
+ <span id="new_room_cancel_link"> or
96
+ <a class="admin show_hide_toggler_new_room" href="#" onclick="$('new_room').showHide.toggle(); return false;">Cancel</a></span></p>
97
+ </form> </div>
98
+ </div>
99
+ </div>
100
+ </div><script type="text/javascript">
101
+ //<![CDATA[
102
+ new ShowHide('new_room', {"beforeToggle": function(showHide) {Form.reset('new_room_form'); Element.update('new_room_form_errors', '')}, "afterToggle": function(showHide) {if (/MSIE/.test(navigator.userAgent)) {Element.hide(document.body);Element.show(document.body);};Field.activate('room_name')}})
103
+ //]]>
104
+ </script></div>
105
+
106
+ <div id="rooms">
107
+ <table class="lobby">
108
+ <tr>
109
+ <td class="lobby_room" style="vertical-align: top; width: 33%;"><div id="room_17715" class="room full shaded">
110
+ <h2>
111
+ Just Fishin
112
+ </h2>
113
+
114
+ <div class="updated">
115
+
116
+ Full
117
+ <span class="active"> Active 7 minutes ago</span>
118
+ </div>
119
+ <p>Sargasm: Deriving far too much satisfaction from glibly berating another with sarcasm.
120
+
121
+ Ex: &quot;Oh, thanks a lot for drinking my last beer! No, it's my fault... if I wanted it for myself, I shouldn't have put it in the fridge!&quot;
122
+ &quot;Dude, don't have a sargasm</p>
123
+
124
+
125
+ <ul class="participant-list" id="participant_list-17715">
126
+ <li class="user nubbin_region" id="user_38447">
127
+
128
+ <span class="name">Caribou Barbie</span>
129
+
130
+ </li>
131
+ <li class="user nubbin_region idle" id="user_39723">
132
+
133
+ <span class="name">git</span>
134
+
135
+ </li>
136
+ <li class="user nubbin_region" id="user_38449">
137
+
138
+ <span class="name">Joe Sixpack</span>
139
+
140
+ </li>
141
+ <li class="user nubbin_region idle" id="user_38445">
142
+
143
+ <span class="name">Billy Bob</span>
144
+
145
+ </li>
146
+ </ul>
147
+
148
+ </div>
149
+ </td>
150
+ <td class="lobby_room" style="vertical-align: top; width: 33%;">&nbsp;</td>
151
+ <td class="lobby_room" style="vertical-align: top; width: 33%;">&nbsp;</td>
152
+ </tr>
153
+ </table>
154
+
155
+ </div>
156
+ </div>
157
+
158
+ <script type="text/javascript">
159
+ //<![CDATA[
160
+ Ajax.Responders.register({
161
+ onCreate: function() {
162
+ if (Ajax.activeRequestCount > 0)
163
+ Element.show('new_room_spinner');
164
+ },
165
+ onComplete: function() {
166
+ if (Ajax.activeRequestCount == 0)
167
+ Element.hide('new_room_spinner');
168
+ }
169
+ });
170
+
171
+ //]]>
172
+ </script>
173
+ <script type="text/javascript">
174
+ //<![CDATA[
175
+ new PeriodicalExecuter(function() {new Ajax.Request('http://fish.campfirenow.com/rooms', {asynchronous:true, evalScripts:true})}, 60)
176
+ //]]>
177
+ </script>
178
+
179
+ <p style="clear: both;">&nbsp;</p>
180
+
181
+ </div>
182
+
183
+ <div class="bottom">&nbsp;</div>
184
+ <div id="Footer">
185
+ <strong><a href="http://www.campfirenow.com/help" target=_blank>FAQs and Help</a></strong> |
186
+ <a href="http://www.campfirenow.com/privacy.html" target=_blank>Privacy Policy</a> |
187
+ <a href="http://www.campfirenow.com/terms.html" target=_blank>Terms of Service</a>
188
+ </div>
189
+
190
+ </div>
191
+
192
+
193
+ </div>
194
+ </div>
195
+
196
+
197
+ </body>
198
+ </html>
@@ -0,0 +1,192 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Chat rooms</title>
7
+ <link href="/stylesheets/screen.css?1224558404" media="all" rel="stylesheet" type="text/css" />
8
+ <!--[if lte IE 6]>
9
+ <style type="text/css">
10
+ @import url("/stylesheets/screen-ie.css?1224558404");
11
+ </style>
12
+ <![endif]-->
13
+ <!--[if IE 7]>
14
+ <style type="text/css">
15
+ @import url("/stylesheets/screen-ie-7.css?1224558404");
16
+ </style>
17
+ <![endif]-->
18
+
19
+ <link href="/stylesheets/print.css?1224558404" media="print" rel="stylesheet" type="text/css" />
20
+ <link href="/stylesheets/blue.css?1224558404" media="screen" rel="stylesheet" title="Theme" type="text/css" />
21
+ <script src="/javascripts/prototype.js?1224558404" type="text/javascript"></script>
22
+ <script src="/javascripts/effects.js?1224558404" type="text/javascript"></script>
23
+ <script src="/javascripts/application.js?1224558404" type="text/javascript"></script>
24
+ <script src="/javascripts/nubbins.js?1224558404" type="text/javascript"></script>
25
+ <script src="/javascripts/campfire.js?1224558404" type="text/javascript"></script>
26
+ <script src="/javascripts/javascript_flash_gateway.js?1224558404" type="text/javascript"></script>
27
+ </head>
28
+
29
+ <body class="lobby">
30
+
31
+
32
+
33
+
34
+ <div id="Header">
35
+ <div id="Tabs">
36
+ <ul id="MainTabs">
37
+ <li><a href="http://fish.campfirenow.com/" class="current">Lobby</a></li>
38
+
39
+
40
+
41
+ <li><a href="http://fish.campfirenow.com/room/179715" class="chat" id="room_tab-17715">Just Fishin</a></li>
42
+
43
+
44
+
45
+
46
+ <li><a href="http://fish.campfirenow.com/files+transcripts" class="" style="margin-left: 8px">Files, Transcripts &amp; Search</a></li>
47
+
48
+ <li style="float: right;" class="logout"><a href="http://fish.campfirenow.com/logout">Logout</a></li>
49
+ <li style="float: right" class="logout"><a href="/member/edit">My account</a></li>
50
+
51
+
52
+ </ul>
53
+ </div>
54
+ </div>
55
+
56
+
57
+ <div id="Wrapper">
58
+ <div id="Container">
59
+
60
+
61
+
62
+
63
+ <div class="Full">
64
+ <div class="col">
65
+
66
+ <div id="lobby">
67
+ <h1>
68
+ <span><a class="admin toggle show_hide_toggler_new_room" href="#" id="create_room_link" onclick="$('new_room').showHide.toggle(); return false;">Create a new room</a></span>
69
+ Chat rooms
70
+ </h1>
71
+
72
+ <div class="currentChatters">
73
+ 3 people currently chatting
74
+ <span>
75
+ <br />You're near your simultaneous chatter limit of 4.
76
+ Ask <a href="mailto:bob@billy.com">Billy Bob</a> to upgrade the account.
77
+ </span>
78
+
79
+ </div>
80
+ <div class="show_hide_wrapper"><div class=" showhide" id="new_room" style="display: none"><div class="basic_form_wrapper">
81
+ <div class="basic_form">
82
+ <div class="explanation">
83
+ <h3>Create a new room</h3>
84
+ <p>All chats take place in rooms. You can create as many rooms as you'd like.</p>
85
+ <p>Consider making rooms for client projects, general discussions, specific meetings/events, and more.</p>
86
+ <div class="spinner" id="new_room_spinner" style="display: none">&nbsp;</div>
87
+ </div>
88
+ <div id="new_room_form_errors"></div>
89
+ <div class="body">
90
+ <form action="http://fish.campfirenow.com/account/create/room?from=lobby" id="new_room_form" method="post" onsubmit="$(this).down('input[type=submit]').disable(); Element.hide('new_room_cancel_link'); new Ajax.Request('http://fish.campfirenow.com/account/create/room?from=lobby', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;"> <h3>Name the room</h3>
91
+ <p><input class="big expanded" id="room_name" name="room[name]" size="30" type="text" /></p>
92
+ <h3 style="font-weight: normal;">Optional: Give the room a topic or description</h3>
93
+ <p><textarea class="expanded" cols="40" id="room_topic" name="room[topic]" rows="20"></textarea></p>
94
+ <p class="submit"><input class="primary" name="commit" type="submit" value="Create the room" />
95
+ <span id="new_room_cancel_link"> or
96
+ <a class="admin show_hide_toggler_new_room" href="#" onclick="$('new_room').showHide.toggle(); return false;">Cancel</a></span></p>
97
+ </form> </div>
98
+ </div>
99
+ </div>
100
+ </div><script type="text/javascript">
101
+ //<![CDATA[
102
+ new ShowHide('new_room', {"beforeToggle": function(showHide) {Form.reset('new_room_form'); Element.update('new_room_form_errors', '')}, "afterToggle": function(showHide) {if (/MSIE/.test(navigator.userAgent)) {Element.hide(document.body);Element.show(document.body);};Field.activate('room_name')}})
103
+ //]]>
104
+ </script></div>
105
+
106
+ <div id="rooms">
107
+ <table class="lobby">
108
+ <tr>
109
+ <td class="lobby_room" style="vertical-align: top; width: 33%;"><div id="room_17715" class="room shaded">
110
+ <h2>
111
+
112
+ <a href="http://fish.campfirenow.com/room/17715">Just Fishin</a>
113
+ </h2>
114
+
115
+ <div class="updated">
116
+ <span class="active"> Active 12 minutes ago</span>
117
+ </div>
118
+ <p>Sargasm: Deriving far too much satisfaction from glibly berating another with sarcasm.
119
+
120
+ Ex: &quot;Oh, thanks a lot for drinking my last beer! No, it's my fault... if I wanted it for myself, I shouldn't have put it in the fridge!&quot;
121
+ &quot;Dude, don't have a sargasm</p>
122
+
123
+
124
+ <ul class="participant-list" id="participant_list-17715">
125
+ <li class="user nubbin_region" id="user_38447">
126
+
127
+ <span class="name">Caribou Barbie</span>
128
+
129
+ </li>
130
+ <li class="user nubbin_region" id="user_38449">
131
+
132
+ <span class="name">Joe Sixpack</span>
133
+
134
+ </li>
135
+ <li class="user nubbin_region" id="user_38445">
136
+
137
+ <span class="name">Billy Bob</span>
138
+
139
+ </li>
140
+ </ul>
141
+
142
+ </div>
143
+ </td>
144
+ <td class="lobby_room" style="vertical-align: top; width: 33%;">&nbsp;</td>
145
+ <td class="lobby_room" style="vertical-align: top; width: 33%;">&nbsp;</td>
146
+ </tr>
147
+ </table>
148
+
149
+ </div>
150
+ </div>
151
+
152
+ <script type="text/javascript">
153
+ //<![CDATA[
154
+ Ajax.Responders.register({
155
+ onCreate: function() {
156
+ if (Ajax.activeRequestCount > 0)
157
+ Element.show('new_room_spinner');
158
+ },
159
+ onComplete: function() {
160
+ if (Ajax.activeRequestCount == 0)
161
+ Element.hide('new_room_spinner');
162
+ }
163
+ });
164
+
165
+ //]]>
166
+ </script>
167
+ <script type="text/javascript">
168
+ //<![CDATA[
169
+ new PeriodicalExecuter(function() {new Ajax.Request('http://fish.campfirenow.com/rooms', {asynchronous:true, evalScripts:true})}, 60)
170
+ //]]>
171
+ </script>
172
+
173
+ <p style="clear: both;">&nbsp;</p>
174
+
175
+ </div>
176
+
177
+ <div class="bottom">&nbsp;</div>
178
+ <div id="Footer">
179
+ <strong><a href="http://www.campfirenow.com/help" target=_blank>FAQs and Help</a></strong> |
180
+ <a href="http://www.campfirenow.com/privacy.html" target=_blank>Privacy Policy</a> |
181
+ <a href="http://www.campfirenow.com/terms.html" target=_blank>Terms of Service</a>
182
+ </div>
183
+
184
+ </div>
185
+
186
+
187
+ </div>
188
+ </div>
189
+
190
+
191
+ </body>
192
+ </html>
@@ -0,0 +1,133 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>Campfire: Today, May 5</title>
7
+ <link href="/stylesheets/screen.css?1238215612" media="all" rel="stylesheet" type="text/css" />
8
+ <!--[if lte IE 6]>
9
+ <style type="text/css">
10
+ @import url("/stylesheets/screen-ie.css?1238215612");
11
+ </style>
12
+ <![endif]-->
13
+ <!--[if IE 7]>
14
+ <style type="text/css">
15
+ @import url("/stylesheets/screen-ie-7.css?1238215612");
16
+ </style>
17
+ <![endif]-->
18
+
19
+ <!--[if lte IE 6]>
20
+ <style type="text/css">
21
+ @import url("/stylesheets/transcript-ie.css?1238215612");
22
+ </style>
23
+ <![endif]-->
24
+ <!--[if IE 7]>
25
+ <style type="text/css">
26
+ @import url("/stylesheets/transcript-ie-7.css?1238215612");
27
+ </style>
28
+ <![endif]-->
29
+
30
+ <link href="/stylesheets/print.css?1238215612" media="print" rel="stylesheet" type="text/css" />
31
+ <link href="/stylesheets/pink.css?1238215612" media="screen" rel="stylesheet" title="Theme" type="text/css" />
32
+ <script src="/javascripts/prototype.js?1238215612" type="text/javascript"></script>
33
+ <script src="/javascripts/effects.js?1238215612" type="text/javascript"></script>
34
+ <script src="/javascripts/sound.js?1238215612" type="text/javascript"></script>
35
+ <script src="/javascripts/application.js?1238215612" type="text/javascript"></script>
36
+ <script src="/javascripts/nubbins.js?1238215612" type="text/javascript"></script>
37
+ <script src="/javascripts/campfire.js?1238215612" type="text/javascript"></script>
38
+ <script src="/javascripts/javascript_flash_gateway.js?1238215612" type="text/javascript"></script>
39
+ <script type="text/javascript">
40
+ soundManager.url = "/movies/";
41
+ </script>
42
+ </head>
43
+
44
+ <body class="transcript">
45
+
46
+
47
+
48
+
49
+
50
+ <div id="Wrapper">
51
+ <div id="Container">
52
+
53
+
54
+
55
+
56
+ <div class="Left">
57
+ <div class="col">
58
+
59
+ <h1 class="date"><span class="print_only">Desk:Marcel &mdash;</span> Today, May 5</h1>
60
+
61
+ <p class="adjacent_transcripts">&larr; <a href="https://care2.campfirenow.com/room/214625/transcript/2009/05/04">Yesterday, May 4</a></p>
62
+
63
+
64
+ <div id="chat-wrapper">
65
+ <table class="chat">
66
+ <tbody id="chat">
67
+ <tr class="timestamp_message message" id="message_128062968" style="">
68
+ <td class="date"><span>May 5</span></td>
69
+ <td class="time"><div> 9:35 AM</div></td>
70
+ </tr>
71
+
72
+ <tr class="enter_message message user_407349" id="message_128062969" style="">
73
+ <td class="person">Marcel</td>
74
+ <td class="body"><div>has entered the room</div></td>
75
+ </tr>
76
+ <tr class="timestamp_message message" id="message_128093469" style="">
77
+ <td class="date"><span style="display:none">May 5</span></td>
78
+ <td class="time"><div>11:20 AM</div></td>
79
+ </tr>
80
+
81
+ <tr class="text_message message user_407349 you" id="message_128093470" style="">
82
+ <td class="person"><span>Marcel</span></td>
83
+ <td class="body"><div>Hello World</div></td>
84
+ </tr>
85
+
86
+ </tbody>
87
+ </table>
88
+ <style type="text/css">#chat td.body div {}</style>
89
+
90
+
91
+ <p class="adjacent_transcripts">&larr; <a href="https://care2.campfirenow.com/room/214625/transcript/2009/05/04">Yesterday, May 4</a></p>
92
+
93
+ </div>
94
+
95
+
96
+ </div>
97
+ <div class="bottom">&nbsp;</div>
98
+ </div>
99
+
100
+ <script type="text/javascript">
101
+ Campfire.Responders = ['Transcript', 'WindowManager', 'SoundManager'];
102
+ window.chat = new Campfire.Chat({transcriptElement: 'chat', sounds: {"crickets": "hears crickets chirping", "trombone": "plays a sad trombone", "rimshot": "plays a rimshot"}, soundsEnabled: true});
103
+ </script>
104
+
105
+
106
+ <div class="Right">
107
+ <div class="col">
108
+ <div id="Title">
109
+ <div id="room_title">
110
+ <h1>Desk:Marcel</h1>
111
+ </div>
112
+ </div>
113
+
114
+ <div class="participants">
115
+ <h3>People in this transcript</h3>
116
+
117
+ <ul id="participants">
118
+ <li>Marcel</li>
119
+ </ul>
120
+ </div>
121
+
122
+ <div class="files">
123
+ </div>
124
+
125
+ </div>
126
+ </div>
127
+
128
+ </div>
129
+ </div>
130
+
131
+
132
+ </body>
133
+ </html>
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,4 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+ require 'rubygems'
3
+ require 'spec'
4
+ require 'tinder'
@@ -0,0 +1,4 @@
1
+ # Rename to credentials.rb
2
+ SUBDOMAIN = 'test'
3
+ USER, PASS = 'user@example.com', 'secret'
4
+ SSL = false
@@ -0,0 +1,3 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require File.dirname(__FILE__) + '/../lib/tinder.rb'
data/tinder.gemspec ADDED
@@ -0,0 +1,77 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{tinder}
8
+ s.version = "1.2.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Brandon Keepers"]
12
+ s.date = %q{2009-09-12}
13
+ s.description = %q{An API for interfacing with Campfire, the 37Signals chat application.}
14
+ s.email = %q{brandon@opensoul.org}
15
+ s.extra_rdoc_files = [
16
+ "README.txt"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "CHANGELOG.txt",
21
+ "Manifest.txt",
22
+ "README.txt",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "init.rb",
26
+ "lib/tinder.rb",
27
+ "lib/tinder/campfire.rb",
28
+ "lib/tinder/multipart.rb",
29
+ "lib/tinder/room.rb",
30
+ "site/index.html",
31
+ "site/stylesheets/style.css",
32
+ "spec/campfire_spec.rb",
33
+ "spec/html/full_lobby.html",
34
+ "spec/html/normal_lobby.html",
35
+ "spec/html/transcript.html",
36
+ "spec/spec.opts",
37
+ "spec/spec_helper.rb",
38
+ "test/remote/credentials.rb.example",
39
+ "test/remote/remote_campfire_test.rb",
40
+ "test/test_helper.rb",
41
+ "tinder.gemspec"
42
+ ]
43
+ s.homepage = %q{http://github.com/collectiveidea/tinder}
44
+ s.rdoc_options = ["--charset=UTF-8"]
45
+ s.require_paths = ["lib"]
46
+ s.rubyforge_project = %q{tinder}
47
+ s.rubygems_version = %q{1.3.3}
48
+ s.summary = %q{An (unofficial) Campfire API}
49
+ s.test_files = [
50
+ "spec/campfire_spec.rb",
51
+ "spec/spec_helper.rb",
52
+ "test/remote/remote_campfire_test.rb",
53
+ "test/test_helper.rb"
54
+ ]
55
+
56
+ if s.respond_to? :specification_version then
57
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
58
+ s.specification_version = 3
59
+
60
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
61
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
62
+ s.add_runtime_dependency(%q<hpricot>, [">= 0"])
63
+ s.add_runtime_dependency(%q<mime-types>, [">= 0"])
64
+ s.add_development_dependency(%q<rspec>, [">= 0"])
65
+ else
66
+ s.add_dependency(%q<activesupport>, [">= 0"])
67
+ s.add_dependency(%q<hpricot>, [">= 0"])
68
+ s.add_dependency(%q<mime-types>, [">= 0"])
69
+ s.add_dependency(%q<rspec>, [">= 0"])
70
+ end
71
+ else
72
+ s.add_dependency(%q<activesupport>, [">= 0"])
73
+ s.add_dependency(%q<hpricot>, [">= 0"])
74
+ s.add_dependency(%q<mime-types>, [">= 0"])
75
+ s.add_dependency(%q<rspec>, [">= 0"])
76
+ end
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-06 00:00:00 -04:00
12
+ date: 2009-09-12 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -43,14 +43,14 @@ dependencies:
43
43
  version: "0"
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
- name: hoe
46
+ name: rspec
47
47
  type: :development
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 2.0.0
53
+ version: "0"
54
54
  version:
55
55
  description: An API for interfacing with Campfire, the 37Signals chat application.
56
56
  email: brandon@opensoul.org
@@ -59,28 +59,38 @@ executables: []
59
59
  extensions: []
60
60
 
61
61
  extra_rdoc_files:
62
- - CHANGELOG.txt
63
- - Manifest.txt
64
62
  - README.txt
65
63
  files:
64
+ - .gitignore
66
65
  - CHANGELOG.txt
67
66
  - Manifest.txt
68
67
  - README.txt
69
68
  - Rakefile
69
+ - VERSION
70
70
  - init.rb
71
71
  - lib/tinder.rb
72
72
  - lib/tinder/campfire.rb
73
73
  - lib/tinder/multipart.rb
74
74
  - lib/tinder/room.rb
75
- - lib/tinder/version.rb
75
+ - site/index.html
76
+ - site/stylesheets/style.css
77
+ - spec/campfire_spec.rb
78
+ - spec/html/full_lobby.html
79
+ - spec/html/normal_lobby.html
80
+ - spec/html/transcript.html
81
+ - spec/spec.opts
82
+ - spec/spec_helper.rb
83
+ - test/remote/credentials.rb.example
84
+ - test/remote/remote_campfire_test.rb
85
+ - test/test_helper.rb
86
+ - tinder.gemspec
76
87
  has_rdoc: true
77
- homepage: http://tinder.rubyforge.org
88
+ homepage: http://github.com/collectiveidea/tinder
78
89
  licenses: []
79
90
 
80
91
  post_install_message:
81
92
  rdoc_options:
82
- - --main
83
- - README.txt
93
+ - --charset=UTF-8
84
94
  require_paths:
85
95
  - lib
86
96
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -103,4 +113,7 @@ signing_key:
103
113
  specification_version: 3
104
114
  summary: An (unofficial) Campfire API
105
115
  test_files:
116
+ - spec/campfire_spec.rb
117
+ - spec/spec_helper.rb
106
118
  - test/remote/remote_campfire_test.rb
119
+ - test/test_helper.rb
@@ -1,9 +0,0 @@
1
- module Tinder #:nodoc:
2
- module VERSION #:nodoc:
3
- MAJOR = 1
4
- MINOR = 2
5
- TINY = 1
6
-
7
- STRING = [MAJOR, MINOR, TINY].join('.')
8
- end
9
- end