tinder 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ require 'faraday'
4
4
  module Faraday
5
5
  class Response::RaiseOnAuthenticationFailure < Response::Middleware
6
6
  def on_complete(response)
7
- raise Tinder::AuthenticationFailed if response[:status] == 401
7
+ raise Tinder::AuthenticationFailed if [401, 404].include?(response[:status])
8
8
  end
9
9
  end
10
10
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: UTF-8
2
+ require 'active_support'
2
3
  require 'tinder/connection'
3
4
  require 'tinder/campfire'
4
5
  require 'tinder/room'
@@ -19,8 +19,8 @@ module Tinder
19
19
  # == Options:
20
20
  # * +:ssl+: use SSL for the connection, which is required if you have a Campfire SSL account.
21
21
  # Defaults to true
22
- # * +:ssl_verify+: verify SSL certificate if using SSL
23
- # Defaults to true
22
+ # * +:ssl_options+: SSL options passed to the underlaying Faraday connection. Allows to specify if the SSL certificate should be verified (:verify => true|false) and to specify the path to the ssl certs directory (:ca_path => "path/certs")
23
+ # Defaults to {:verify => true}
24
24
  # * +:proxy+: a proxy URI. (e.g. :proxy => 'http://user:pass@example.com:8000')
25
25
  #
26
26
  # c = Tinder::Campfire.new("mysubdomain", :ssl => true)
@@ -35,7 +35,9 @@ module Tinder
35
35
 
36
36
  def initialize(subdomain, options = {})
37
37
  @subdomain = subdomain
38
- @options = {:ssl => true, :ssl_verify => true, :proxy => ENV['HTTP_PROXY']}.merge(options)
38
+ @options = {:ssl => true, :ssl_options => {:verify => true}, :proxy => ENV['HTTP_PROXY']}
39
+ @options[:ssl_options][:verify] = options.delete(:ssl_verify) unless options[:ssl_verify].nil?
40
+ @options.merge!(options)
39
41
  @uri = URI.parse("#{@options[:ssl] ? 'https' : 'http' }://#{subdomain}.#{HOST}")
40
42
  @token = options[:token]
41
43
 
@@ -50,11 +52,7 @@ module Tinder
50
52
  def connection
51
53
  @connection ||= begin
52
54
  conn = self.class.connection.dup
53
- conn.url_prefix = @uri.to_s
54
- conn.proxy options[:proxy]
55
- if options[:ssl_verify] == false
56
- conn.ssl[:verify] = false
57
- end
55
+ set_connection_options(conn)
58
56
  conn
59
57
  end
60
58
  end
@@ -62,11 +60,7 @@ module Tinder
62
60
  def raw_connection
63
61
  @raw_connection ||= begin
64
62
  conn = self.class.raw_connection.dup
65
- conn.url_prefix = @uri.to_s
66
- conn.proxy options[:proxy]
67
- if options[:ssl_verify] == false
68
- conn.ssl[:verify] = false
69
- end
63
+ set_connection_options(conn)
70
64
  conn
71
65
  end
72
66
  end
@@ -101,5 +95,14 @@ module Tinder
101
95
  def ssl?
102
96
  uri.scheme == 'https'
103
97
  end
98
+
99
+ private
100
+ def set_connection_options(conn)
101
+ conn.url_prefix = @uri.to_s
102
+ conn.proxy options[:proxy]
103
+ if options[:ssl_options]
104
+ conn.ssl.merge!(options[:ssl_options])
105
+ end
106
+ end
104
107
  end
105
108
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Tinder
3
- VERSION = '1.7.0' unless defined?(::Tinder::VERSION)
3
+ VERSION = '1.8.0' unless defined?(::Tinder::VERSION)
4
4
  end
@@ -12,6 +12,15 @@ describe Tinder::Connection do
12
12
  lambda { connection.get('/rooms.json') }.should raise_error(Tinder::AuthenticationFailed)
13
13
  end
14
14
 
15
+ it "should raise an exception when an invalid subdomain is specified" do
16
+ stub_connection(Tinder::Connection) do |stub|
17
+ stub.get("/rooms.json") {[404, {}, "Not found"]}
18
+ end
19
+
20
+ connection = Tinder::Connection.new('test', :token => 'foo')
21
+ lambda { connection.get('/rooms.json') }.should raise_error(Tinder::AuthenticationFailed)
22
+ end
23
+
15
24
  it "should lookup token when username/password provided" do
16
25
  stub_connection(Tinder::Connection) do |stub|
17
26
  stub.get("/users/me.json") {[200, {}, fixture('users/me.json')]}
@@ -48,5 +57,21 @@ describe Tinder::Connection do
48
57
  connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass', :ssl_verify => false)
49
58
  connection.connection.ssl[:verify].should be == false
50
59
  end
60
+
61
+ it "should allow passing any ssl_options to Faraday" do
62
+ stub_connection(Tinder::Connection) do |stub|
63
+ stub.get("/users/me.json") {[200, {}, fixture('users/me.json')]}
64
+ end
65
+ connection = Tinder::Connection.new('test',
66
+ :username => 'user',
67
+ :password => 'pass',
68
+ :ssl_options => {
69
+ :verify => false,
70
+ :ca_path => "/usr/lib/ssl/certs",
71
+ :ca_file => "/etc/ssl/custom"
72
+ }
73
+ )
74
+ connection.connection.ssl.should eql(:verify => false, :ca_path => "/usr/lib/ssl/certs", :ca_file => "/etc/ssl/custom")
75
+ end
51
76
  end
52
77
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.add_runtime_dependency 'multipart-post', '~> 1.1'
17
17
  gem.add_runtime_dependency 'twitter-stream', '~> 0.1'
18
18
 
19
- gem.authors = ["Brandon Keepers"]
19
+ gem.authors = ["Brandon Keepers", "Brian Ryckbost"]
20
20
  gem.description = %q{A Ruby API for interfacing with Campfire, the 37Signals chat application.}
21
21
  gem.email = ['brandon@opensoul.org']
22
22
  gem.extra_rdoc_files = ['README.markdown']
metadata CHANGED
@@ -1,165 +1,233 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tinder
3
- version: !ruby/object:Gem::Version
4
- version: 1.7.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 55
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 8
9
+ - 0
10
+ version: 1.8.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Brandon Keepers
14
+ - Brian Ryckbost
9
15
  autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
- date: 2011-09-12 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2011-11-16 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: fakeweb
16
- requirement: &70192463323300 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
26
+ requirements:
19
27
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.3'
28
+ - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 1
32
+ - 3
33
+ version: "1.3"
22
34
  type: :development
23
- prerelease: false
24
- version_requirements: *70192463323300
25
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
26
37
  name: rake
27
- requirement: &70192463353520 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
28
40
  none: false
29
- requirements:
41
+ requirements:
30
42
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '0.8'
43
+ - !ruby/object:Gem::Version
44
+ hash: 27
45
+ segments:
46
+ - 0
47
+ - 8
48
+ version: "0.8"
33
49
  type: :development
34
- prerelease: false
35
- version_requirements: *70192463353520
36
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
37
52
  name: rspec
38
- requirement: &70192463353060 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
39
55
  none: false
40
- requirements:
56
+ requirements:
41
57
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '2.6'
58
+ - !ruby/object:Gem::Version
59
+ hash: 15
60
+ segments:
61
+ - 2
62
+ - 6
63
+ version: "2.6"
44
64
  type: :development
45
- prerelease: false
46
- version_requirements: *70192463353060
47
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
48
67
  name: activesupport
49
- requirement: &70192463352560 !ruby/object:Gem::Requirement
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
50
70
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '2.3'
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 5
75
+ segments:
76
+ - 2
77
+ - 3
78
+ version: "2.3"
55
79
  - - <
56
- - !ruby/object:Gem::Version
57
- version: '4'
80
+ - !ruby/object:Gem::Version
81
+ hash: 11
82
+ segments:
83
+ - 4
84
+ version: "4"
58
85
  type: :runtime
59
- prerelease: false
60
- version_requirements: *70192463352560
61
- - !ruby/object:Gem::Dependency
86
+ version_requirements: *id004
87
+ - !ruby/object:Gem::Dependency
62
88
  name: eventmachine
63
- requirement: &70192463351840 !ruby/object:Gem::Requirement
89
+ prerelease: false
90
+ requirement: &id005 !ruby/object:Gem::Requirement
64
91
  none: false
65
- requirements:
92
+ requirements:
66
93
  - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '0.12'
94
+ - !ruby/object:Gem::Version
95
+ hash: 19
96
+ segments:
97
+ - 0
98
+ - 12
99
+ version: "0.12"
69
100
  type: :runtime
70
- prerelease: false
71
- version_requirements: *70192463351840
72
- - !ruby/object:Gem::Dependency
101
+ version_requirements: *id005
102
+ - !ruby/object:Gem::Dependency
73
103
  name: faraday
74
- requirement: &70192463351340 !ruby/object:Gem::Requirement
104
+ prerelease: false
105
+ requirement: &id006 !ruby/object:Gem::Requirement
75
106
  none: false
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: '0.6'
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ hash: 7
111
+ segments:
112
+ - 0
113
+ - 6
114
+ version: "0.6"
80
115
  - - <
81
- - !ruby/object:Gem::Version
82
- version: '0.8'
116
+ - !ruby/object:Gem::Version
117
+ hash: 27
118
+ segments:
119
+ - 0
120
+ - 8
121
+ version: "0.8"
83
122
  type: :runtime
84
- prerelease: false
85
- version_requirements: *70192463351340
86
- - !ruby/object:Gem::Dependency
123
+ version_requirements: *id006
124
+ - !ruby/object:Gem::Dependency
87
125
  name: faraday_middleware
88
- requirement: &70192463350580 !ruby/object:Gem::Requirement
126
+ prerelease: false
127
+ requirement: &id007 !ruby/object:Gem::Requirement
89
128
  none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0.6'
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ hash: 7
133
+ segments:
134
+ - 0
135
+ - 6
136
+ version: "0.6"
94
137
  - - <
95
- - !ruby/object:Gem::Version
96
- version: '0.8'
138
+ - !ruby/object:Gem::Version
139
+ hash: 27
140
+ segments:
141
+ - 0
142
+ - 8
143
+ version: "0.8"
97
144
  type: :runtime
98
- prerelease: false
99
- version_requirements: *70192463350580
100
- - !ruby/object:Gem::Dependency
145
+ version_requirements: *id007
146
+ - !ruby/object:Gem::Dependency
101
147
  name: hashie
102
- requirement: &70192463349860 !ruby/object:Gem::Requirement
148
+ prerelease: false
149
+ requirement: &id008 !ruby/object:Gem::Requirement
103
150
  none: false
104
- requirements:
151
+ requirements:
105
152
  - - ~>
106
- - !ruby/object:Gem::Version
107
- version: '1.0'
153
+ - !ruby/object:Gem::Version
154
+ hash: 15
155
+ segments:
156
+ - 1
157
+ - 0
158
+ version: "1.0"
108
159
  type: :runtime
109
- prerelease: false
110
- version_requirements: *70192463349860
111
- - !ruby/object:Gem::Dependency
160
+ version_requirements: *id008
161
+ - !ruby/object:Gem::Dependency
112
162
  name: mime-types
113
- requirement: &70192463349400 !ruby/object:Gem::Requirement
163
+ prerelease: false
164
+ requirement: &id009 !ruby/object:Gem::Requirement
114
165
  none: false
115
- requirements:
166
+ requirements:
116
167
  - - ~>
117
- - !ruby/object:Gem::Version
118
- version: '1.16'
168
+ - !ruby/object:Gem::Version
169
+ hash: 47
170
+ segments:
171
+ - 1
172
+ - 16
173
+ version: "1.16"
119
174
  type: :runtime
120
- prerelease: false
121
- version_requirements: *70192463349400
122
- - !ruby/object:Gem::Dependency
175
+ version_requirements: *id009
176
+ - !ruby/object:Gem::Dependency
123
177
  name: multi_json
124
- requirement: &70192463348940 !ruby/object:Gem::Requirement
178
+ prerelease: false
179
+ requirement: &id010 !ruby/object:Gem::Requirement
125
180
  none: false
126
- requirements:
181
+ requirements:
127
182
  - - ~>
128
- - !ruby/object:Gem::Version
129
- version: '1.0'
183
+ - !ruby/object:Gem::Version
184
+ hash: 15
185
+ segments:
186
+ - 1
187
+ - 0
188
+ version: "1.0"
130
189
  type: :runtime
131
- prerelease: false
132
- version_requirements: *70192463348940
133
- - !ruby/object:Gem::Dependency
190
+ version_requirements: *id010
191
+ - !ruby/object:Gem::Dependency
134
192
  name: multipart-post
135
- requirement: &70192463348480 !ruby/object:Gem::Requirement
193
+ prerelease: false
194
+ requirement: &id011 !ruby/object:Gem::Requirement
136
195
  none: false
137
- requirements:
196
+ requirements:
138
197
  - - ~>
139
- - !ruby/object:Gem::Version
140
- version: '1.1'
198
+ - !ruby/object:Gem::Version
199
+ hash: 13
200
+ segments:
201
+ - 1
202
+ - 1
203
+ version: "1.1"
141
204
  type: :runtime
142
- prerelease: false
143
- version_requirements: *70192463348480
144
- - !ruby/object:Gem::Dependency
205
+ version_requirements: *id011
206
+ - !ruby/object:Gem::Dependency
145
207
  name: twitter-stream
146
- requirement: &70192463348020 !ruby/object:Gem::Requirement
208
+ prerelease: false
209
+ requirement: &id012 !ruby/object:Gem::Requirement
147
210
  none: false
148
- requirements:
211
+ requirements:
149
212
  - - ~>
150
- - !ruby/object:Gem::Version
151
- version: '0.1'
213
+ - !ruby/object:Gem::Version
214
+ hash: 9
215
+ segments:
216
+ - 0
217
+ - 1
218
+ version: "0.1"
152
219
  type: :runtime
153
- prerelease: false
154
- version_requirements: *70192463348020
220
+ version_requirements: *id012
155
221
  description: A Ruby API for interfacing with Campfire, the 37Signals chat application.
156
- email:
222
+ email:
157
223
  - brandon@opensoul.org
158
224
  executables: []
225
+
159
226
  extensions: []
160
- extra_rdoc_files:
227
+
228
+ extra_rdoc_files:
161
229
  - README.markdown
162
- files:
230
+ files:
163
231
  - .gemtest
164
232
  - .gitignore
165
233
  - .rspec
@@ -191,29 +259,40 @@ files:
191
259
  - tinder.gemspec
192
260
  homepage: http://github.com/collectiveidea/tinder
193
261
  licenses: []
262
+
194
263
  post_install_message:
195
264
  rdoc_options: []
196
- require_paths:
265
+
266
+ require_paths:
197
267
  - lib
198
- required_ruby_version: !ruby/object:Gem::Requirement
268
+ required_ruby_version: !ruby/object:Gem::Requirement
199
269
  none: false
200
- requirements:
201
- - - ! '>='
202
- - !ruby/object:Gem::Version
203
- version: '0'
204
- required_rubygems_version: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ">="
272
+ - !ruby/object:Gem::Version
273
+ hash: 3
274
+ segments:
275
+ - 0
276
+ version: "0"
277
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
278
  none: false
206
- requirements:
207
- - - ! '>='
208
- - !ruby/object:Gem::Version
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ hash: 23
283
+ segments:
284
+ - 1
285
+ - 3
286
+ - 6
209
287
  version: 1.3.6
210
288
  requirements: []
289
+
211
290
  rubyforge_project:
212
- rubygems_version: 1.8.6
291
+ rubygems_version: 1.8.10
213
292
  signing_key:
214
293
  specification_version: 3
215
294
  summary: Ruby wrapper for the Campfire API
216
- test_files:
295
+ test_files:
217
296
  - spec/fixtures/rooms.json
218
297
  - spec/fixtures/rooms/room80749.json
219
298
  - spec/fixtures/rooms/room80751.json