ratom 0.6.8 → 0.6.9

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.6.9
2
+
3
+ * SSL support [kossnocorp]
4
+
1
5
  == 0.6.8
2
6
 
3
7
  * Better auth-hmac detection.
data/README.rdoc CHANGED
@@ -264,6 +264,10 @@ very well protected anyway.
264
264
 
265
265
  As of version 0.5.1 rAtom also support authentication via HMAC request signing using the AuthHMAC[http://auth-hmac.rubyforge.org] gem. This is made available using the :hmac_access_id and :hmac_secret_key parameters which can be passed to the same methods as the HTTP Basic credentials support.
266
266
 
267
+ === SSL
268
+
269
+ As of version 0.6.9, rAtom supports fetching feeds via https. This is done by using URLs with the SSL protocol. Publishing support is still limited to http, but patches are welcome.
270
+
267
271
  == TODO
268
272
 
269
273
  * Support partial content responses from the server.
data/VERSION.yml CHANGED
@@ -2,4 +2,4 @@
2
2
  :major: 0
3
3
  :build:
4
4
  :minor: 6
5
- :patch: 8
5
+ :patch: 9
@@ -4,9 +4,11 @@
4
4
  #
5
5
  # Please visit http://www.peerworks.org/contact for further information.
6
6
  #
7
- require 'net/http'
7
+ require 'net/https'
8
8
  require 'time'
9
9
 
10
+ RootCA = '/etc/ssl/certs'
11
+
10
12
  # Just a couple methods form transforming strings
11
13
  unless defined?(ActiveSupport)
12
14
  class String # :nodoc:
@@ -292,21 +294,32 @@ module Atom
292
294
  when IO
293
295
  XML::Reader.io(o)
294
296
  when URI
295
- raise ArgumentError, "#{class_name}.load only handles http URIs" if o.scheme != 'http'
297
+ raise ArgumentError, "#{class_name}.load only handles http(s) URIs" unless /http[s]?/ =~ o.scheme
296
298
  response = nil
297
- Net::HTTP.start(o.host, o.port) do |http|
298
- request = Net::HTTP::Get.new(o.request_uri)
299
- if opts[:user] && opts[:pass]
300
- request.basic_auth(opts[:user], opts[:pass])
301
- elsif opts[:hmac_access_id] && opts[:hmac_secret_key]
302
- if Atom::Configuration.auth_hmac_enabled?
303
- AuthHMAC.sign!(request, opts[:hmac_access_id], opts[:hmac_secret_key])
304
- else
305
- raise ArgumentError, "AuthHMAC credentials provides by auth-hmac gem is not installed"
306
- end
299
+
300
+ http = http = Net::HTTP.new(o.host, o.port)
301
+
302
+ http.use_ssl = (o.scheme == 'https')
303
+ if File.directory? RootCA
304
+ http.ca_path = RootCA
305
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
306
+ http.verify_depth = 5
307
+ else
308
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
309
+ end
310
+
311
+ request = Net::HTTP::Get.new(o.request_uri)
312
+ if opts[:user] && opts[:pass]
313
+ request.basic_auth(opts[:user], opts[:pass])
314
+ elsif opts[:hmac_access_id] && opts[:hmac_secret_key]
315
+ if Atom::Configuration.auth_hmac_enabled?
316
+ AuthHMAC.sign!(request, opts[:hmac_access_id], opts[:hmac_secret_key])
317
+ else
318
+ raise ArgumentError, "AuthHMAC credentials provides by auth-hmac gem is not installed"
307
319
  end
308
- response = http.request(request)
309
320
  end
321
+ response = http.request(request)
322
+
310
323
  case response
311
324
  when Net::HTTPSuccess
312
325
  XML::Reader.string(response.body)
data/ratom.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ratom}
8
- s.version = "0.6.8"
8
+ s.version = "0.6.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Peerworks", "Sean Geoghegan"]
12
- s.date = %q{2011-04-30}
12
+ s.date = %q{2011-07-13}
13
13
  s.description = %q{A fast Atom Syndication and Publication API based on libxml}
14
14
  s.email = %q{seangeo@gmail.com}
15
15
  s.extra_rdoc_files = [
data/spec/spec_helper.rb CHANGED
@@ -38,6 +38,9 @@ Spec::Runner.configure do |config|
38
38
 
39
39
  http = mock('http')
40
40
  http.should_receive(:request).with(req).and_return(response)
41
- Net::HTTP.should_receive(:start).with(url.host, url.port).and_yield(http)
41
+ http.stub!(:use_ssl=)
42
+ http.stub!(:verify_mode=)
43
+ http.stub!(:verify_depth=)
44
+ Net::HTTP.should_receive(:new).with(url.host, url.port).and_return(http)
42
45
  end
43
46
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratom
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 8
10
- version: 0.6.8
9
+ - 9
10
+ version: 0.6.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Peerworks
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-04-30 00:00:00 +09:30
19
+ date: 2011-07-13 00:00:00 +09:30
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency