tinder 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -1
- data/README.markdown +7 -3
- data/lib/faraday/response/raise_on_authentication_failure.rb +1 -0
- data/lib/faraday/response/remove_whitespace.rb +1 -0
- data/lib/tinder.rb +10 -0
- data/lib/tinder/campfire.rb +5 -2
- data/lib/tinder/connection.rb +8 -1
- data/lib/tinder/room.rb +5 -0
- data/lib/tinder/version.rb +2 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/tinder/campfire_spec.rb +1 -0
- data/spec/tinder/connection_spec.rb +22 -2
- data/spec/tinder/room_spec.rb +2 -1
- metadata +26 -29
data/.travis.yml
CHANGED
data/README.markdown
CHANGED
@@ -7,7 +7,7 @@ Tinder is a library for interfacing with Campfire, the chat application from 37S
|
|
7
7
|
campfire = Tinder::Campfire.new 'mysubdomain', :token => '546884b3d8fee4d80665g561caf7h9f3ea7b999e'
|
8
8
|
# or you can still use username/password and Tinder will look up your token
|
9
9
|
# campfire = Tinder::Campfire.new 'mysubdomain', :username => 'user', :password => 'pass'
|
10
|
-
|
10
|
+
|
11
11
|
room = campfire.rooms.first
|
12
12
|
room.rename 'New Room Names'
|
13
13
|
room.speak 'Hello world!'
|
@@ -15,13 +15,17 @@ Tinder is a library for interfacing with Campfire, the chat application from 37S
|
|
15
15
|
|
16
16
|
room = campfire.find_room_by_guest_hash 'abc123', 'John Doe'
|
17
17
|
room.speak 'Hello world!'
|
18
|
-
|
18
|
+
|
19
19
|
See the RDoc for more details.
|
20
20
|
|
21
21
|
## Installation
|
22
22
|
|
23
23
|
gem install tinder
|
24
|
-
|
24
|
+
|
25
|
+
## Continuous Integration
|
26
|
+
|
27
|
+
[![Build Status](https://secure.travis-ci.org/collectiveidea/tinder.png)](http://travis-ci.org/collectiveidea/tinder)
|
28
|
+
|
25
29
|
## How to contribute
|
26
30
|
|
27
31
|
If you find what looks like a bug:
|
data/lib/tinder.rb
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'tinder/connection'
|
2
3
|
require 'tinder/campfire'
|
3
4
|
require 'tinder/room'
|
5
|
+
require 'logger'
|
4
6
|
|
5
7
|
module Tinder
|
6
8
|
class Error < StandardError; end
|
7
9
|
class SSLRequiredError < Error; end
|
8
10
|
class AuthenticationFailed < Error; end
|
9
11
|
class ListenFailed < Error; end
|
12
|
+
|
13
|
+
def self.logger
|
14
|
+
@logger ||= Logger.new(ENV['TINDER_LOGGING'] ? STDOUT : nil)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.logger=(logger)
|
18
|
+
@logger = logger
|
19
|
+
end
|
10
20
|
end
|
data/lib/tinder/campfire.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
module Tinder
|
2
3
|
|
3
4
|
# == Usage
|
@@ -17,7 +18,9 @@ module Tinder
|
|
17
18
|
#
|
18
19
|
# == Options:
|
19
20
|
# * +:ssl+: use SSL for the connection, which is required if you have a Campfire SSL account.
|
20
|
-
# Defaults to
|
21
|
+
# Defaults to true
|
22
|
+
# * +:ssl_verify+: verify SSL certificate if using SSL
|
23
|
+
# Defaults to true
|
21
24
|
# * +:proxy+: a proxy URI. (e.g. :proxy => 'http://user:pass@example.com:8000')
|
22
25
|
#
|
23
26
|
# c = Tinder::Campfire.new("mysubdomain", :ssl => true)
|
@@ -32,7 +35,7 @@ module Tinder
|
|
32
35
|
Room.new(connection, room)
|
33
36
|
end
|
34
37
|
end
|
35
|
-
|
38
|
+
|
36
39
|
# Find a campfire room by id
|
37
40
|
def find_room_by_id(id)
|
38
41
|
rooms.detect { |room| room.id == id }
|
data/lib/tinder/connection.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'active_support/json'
|
2
3
|
require 'faraday'
|
3
4
|
require 'faraday/response/raise_on_authentication_failure'
|
@@ -34,7 +35,7 @@ module Tinder
|
|
34
35
|
|
35
36
|
def initialize(subdomain, options = {})
|
36
37
|
@subdomain = subdomain
|
37
|
-
@options = {
|
38
|
+
@options = {:ssl => true, :ssl_verify => true, :proxy => ENV['HTTP_PROXY']}.merge(options)
|
38
39
|
@uri = URI.parse("#{@options[:ssl] ? 'https' : 'http' }://#{subdomain}.#{HOST}")
|
39
40
|
@token = options[:token]
|
40
41
|
|
@@ -51,6 +52,9 @@ module Tinder
|
|
51
52
|
conn = self.class.connection.dup
|
52
53
|
conn.url_prefix = @uri.to_s
|
53
54
|
conn.proxy options[:proxy]
|
55
|
+
if options[:ssl_verify] == false
|
56
|
+
conn.ssl[:verify] = false
|
57
|
+
end
|
54
58
|
conn
|
55
59
|
end
|
56
60
|
end
|
@@ -60,6 +64,9 @@ module Tinder
|
|
60
64
|
conn = self.class.raw_connection.dup
|
61
65
|
conn.url_prefix = @uri.to_s
|
62
66
|
conn.proxy options[:proxy]
|
67
|
+
if options[:ssl_verify] == false
|
68
|
+
conn.ssl[:verify] = false
|
69
|
+
end
|
63
70
|
conn
|
64
71
|
end
|
65
72
|
end
|
data/lib/tinder/room.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
module Tinder
|
2
3
|
# A campfire room
|
3
4
|
class Room
|
@@ -129,6 +130,7 @@ module Tinder
|
|
129
130
|
def listen(options = {})
|
130
131
|
raise ArgumentError, "no block provided" unless block_given?
|
131
132
|
|
133
|
+
Tinder.logger.info "Joining #{@name}…"
|
132
134
|
join # you have to be in the room to listen
|
133
135
|
|
134
136
|
require 'active_support/json'
|
@@ -145,8 +147,10 @@ module Tinder
|
|
145
147
|
:ssl => connection.options[:ssl]
|
146
148
|
}.merge(options)
|
147
149
|
|
150
|
+
Tinder.logger.info "Starting EventMachine server…"
|
148
151
|
EventMachine::run do
|
149
152
|
@stream = Twitter::JSONStream.connect(options)
|
153
|
+
Tinder.logger.info "Listening to #{@name}…"
|
150
154
|
@stream.each_item do |message|
|
151
155
|
message = Hashie::Mash.new(MultiJson.decode(message))
|
152
156
|
message[:user] = user(message.delete(:user_id))
|
@@ -174,6 +178,7 @@ module Tinder
|
|
174
178
|
def stop_listening
|
175
179
|
return unless listening?
|
176
180
|
|
181
|
+
Tinder.logger.info "Stopped listening to #{@name}…"
|
177
182
|
@stream.stop
|
178
183
|
@stream = nil
|
179
184
|
end
|
data/lib/tinder/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Tinder::Connection do
|
@@ -17,10 +18,9 @@ describe Tinder::Connection do
|
|
17
18
|
end
|
18
19
|
|
19
20
|
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
|
20
|
-
connection.token.should
|
21
|
+
connection.token.should == "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
21
22
|
end
|
22
23
|
|
23
|
-
|
24
24
|
it "should use basic auth for credentials" do
|
25
25
|
stub_connection(Tinder::Connection) do |stub|
|
26
26
|
stub.get("/rooms.json") {[200, {}, fixture('rooms.json')]}
|
@@ -29,4 +29,24 @@ describe Tinder::Connection do
|
|
29
29
|
lambda { connection.get('/rooms.json') }.should_not raise_error
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
describe "ssl" do
|
34
|
+
it "should turn on ssl by default" do
|
35
|
+
stub_connection(Tinder::Connection) do |stub|
|
36
|
+
stub.get("/users/me.json") {[200, {}, fixture('users/me.json')]}
|
37
|
+
end
|
38
|
+
|
39
|
+
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
|
40
|
+
connection.ssl?.should be_true
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should should allow peer verification to be turned off" do
|
44
|
+
stub_connection(Tinder::Connection) do |stub|
|
45
|
+
stub.get("/users/me.json") {[200, {}, fixture('users/me.json')]}
|
46
|
+
end
|
47
|
+
|
48
|
+
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass', :ssl_verify => false)
|
49
|
+
connection.connection.ssl[:verify].should be == false
|
50
|
+
end
|
51
|
+
end
|
32
52
|
end
|
data/spec/tinder/room_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Tinder::Room do
|
@@ -8,7 +9,7 @@ describe Tinder::Room do
|
|
8
9
|
stub.get('/room/80749.json') {[200, {}, fixture('rooms/show.json')]}
|
9
10
|
end
|
10
11
|
|
11
|
-
@room = Tinder::Room.new(@connection, 'id' => 80749)
|
12
|
+
@room = Tinder::Room.new(@connection, 'id' => 80749, 'name' => 'Room 1')
|
12
13
|
|
13
14
|
# Get EventMachine out of the way. We could be using em-spec, but seems like overkill
|
14
15
|
require 'twitter/json_stream'
|
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.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-09-12 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fakeweb
|
16
|
-
requirement: &
|
16
|
+
requirement: &70192463323300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70192463323300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70192463353520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.8'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70192463353520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70192463353060 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '2.6'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70192463353060
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &70192463352560 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '4'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70192463352560
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: eventmachine
|
63
|
-
requirement: &
|
63
|
+
requirement: &70192463351840 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: '0.12'
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70192463351840
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: faraday
|
74
|
-
requirement: &
|
74
|
+
requirement: &70192463351340 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -82,10 +82,10 @@ dependencies:
|
|
82
82
|
version: '0.8'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
|
-
version_requirements: *
|
85
|
+
version_requirements: *70192463351340
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: faraday_middleware
|
88
|
-
requirement: &
|
88
|
+
requirement: &70192463350580 !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
91
|
- - ! '>='
|
@@ -96,10 +96,10 @@ dependencies:
|
|
96
96
|
version: '0.8'
|
97
97
|
type: :runtime
|
98
98
|
prerelease: false
|
99
|
-
version_requirements: *
|
99
|
+
version_requirements: *70192463350580
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: hashie
|
102
|
-
requirement: &
|
102
|
+
requirement: &70192463349860 !ruby/object:Gem::Requirement
|
103
103
|
none: false
|
104
104
|
requirements:
|
105
105
|
- - ~>
|
@@ -107,10 +107,10 @@ dependencies:
|
|
107
107
|
version: '1.0'
|
108
108
|
type: :runtime
|
109
109
|
prerelease: false
|
110
|
-
version_requirements: *
|
110
|
+
version_requirements: *70192463349860
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: mime-types
|
113
|
-
requirement: &
|
113
|
+
requirement: &70192463349400 !ruby/object:Gem::Requirement
|
114
114
|
none: false
|
115
115
|
requirements:
|
116
116
|
- - ~>
|
@@ -118,10 +118,10 @@ dependencies:
|
|
118
118
|
version: '1.16'
|
119
119
|
type: :runtime
|
120
120
|
prerelease: false
|
121
|
-
version_requirements: *
|
121
|
+
version_requirements: *70192463349400
|
122
122
|
- !ruby/object:Gem::Dependency
|
123
123
|
name: multi_json
|
124
|
-
requirement: &
|
124
|
+
requirement: &70192463348940 !ruby/object:Gem::Requirement
|
125
125
|
none: false
|
126
126
|
requirements:
|
127
127
|
- - ~>
|
@@ -129,10 +129,10 @@ dependencies:
|
|
129
129
|
version: '1.0'
|
130
130
|
type: :runtime
|
131
131
|
prerelease: false
|
132
|
-
version_requirements: *
|
132
|
+
version_requirements: *70192463348940
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: multipart-post
|
135
|
-
requirement: &
|
135
|
+
requirement: &70192463348480 !ruby/object:Gem::Requirement
|
136
136
|
none: false
|
137
137
|
requirements:
|
138
138
|
- - ~>
|
@@ -140,10 +140,10 @@ dependencies:
|
|
140
140
|
version: '1.1'
|
141
141
|
type: :runtime
|
142
142
|
prerelease: false
|
143
|
-
version_requirements: *
|
143
|
+
version_requirements: *70192463348480
|
144
144
|
- !ruby/object:Gem::Dependency
|
145
145
|
name: twitter-stream
|
146
|
-
requirement: &
|
146
|
+
requirement: &70192463348020 !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
148
|
requirements:
|
149
149
|
- - ~>
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
version: '0.1'
|
152
152
|
type: :runtime
|
153
153
|
prerelease: false
|
154
|
-
version_requirements: *
|
154
|
+
version_requirements: *70192463348020
|
155
155
|
description: A Ruby API for interfacing with Campfire, the 37Signals chat application.
|
156
156
|
email:
|
157
157
|
- brandon@opensoul.org
|
@@ -201,9 +201,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
201
|
- - ! '>='
|
202
202
|
- !ruby/object:Gem::Version
|
203
203
|
version: '0'
|
204
|
-
segments:
|
205
|
-
- 0
|
206
|
-
hash: 2278892891730273210
|
207
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
205
|
none: false
|
209
206
|
requirements:
|