hn 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -16,6 +16,13 @@ And then execute:
16
16
 
17
17
  $ bundle
18
18
 
19
+ ## Issues
20
+
21
+ Recently, Hacker News has started enforcing HTTPS connections. If you're having
22
+ problems accessing Hacker News via this gem, read [these
23
+ instructions](http://railsapps.github.com/openssl-certificate-verify-failed.html)
24
+ for specific fixes.
25
+
19
26
  ## Usage
20
27
 
21
28
  require 'hn'
@@ -41,4 +48,5 @@ And then execute:
41
48
 
42
49
  Thanks following wonderful people for contributing to this project:
43
50
 
44
- [@bencevans](https://github.com/bencevans)
51
+ [@bencevans](https://github.com/bencevans)
52
+ [@imkmf](https://github.com/imkmf)
@@ -5,7 +5,7 @@ require "chronic"
5
5
  module HackerNews
6
6
  class CommentParser
7
7
  def parse(entry_id)
8
- doc = Nokogiri::HTML(open("http://news.ycombinator.com/item?id=#{entry_id}"))
8
+ doc = Nokogiri::HTML(open("https://news.ycombinator.com/item?id=#{entry_id}"))
9
9
  comment_data = doc.css('td.default').map { |td| extract_comment_from_td(td) }
10
10
  comments = []
11
11
 
@@ -19,7 +19,7 @@ module HackerNews
19
19
  private
20
20
 
21
21
  def site_name
22
- 'http://news.ycombinator.com/'
22
+ 'https://news.ycombinator.com/'
23
23
  end
24
24
 
25
25
  def parse_entries(url)
@@ -38,7 +38,7 @@ module HackerNews
38
38
  def parse_entry(trs, i)
39
39
  Entry.new do |entry|
40
40
  entry.link = trs[i*3].at_css('td.title a')['href']
41
- entry.link = site_name + entry.link unless entry.link =~ /^http/
41
+ entry.link = site_name + entry.link unless entry.link =~ /^https/
42
42
 
43
43
  entry.title = trs[i*3].at_css('td.title a').text
44
44
 
@@ -52,7 +52,7 @@ module HackerNews
52
52
  begin
53
53
  entry.id = trs[i*3+1].css('td.subtext a')[1]['href'].match(/\d+/)[0].to_i
54
54
  rescue
55
- entry.id = entry.link.match(/^http:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
55
+ entry.id = entry.link.match(/^https:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
56
56
  end
57
57
  end
58
58
  rescue
@@ -1,3 +1,3 @@
1
1
  module HackerNews
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- FakeWeb.register_uri :get, 'http://news.ycombinator.com/item?id=4084603', :body => fixture('comments.html')
3
+ FakeWeb.register_uri :get, 'https://news.ycombinator.com/item?id=4084603', :body => fixture('comments.html')
4
4
 
5
5
  module HackerNews
6
6
  describe CommentParser do
@@ -1,8 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
- FakeWeb.register_uri :get, 'http://news.ycombinator.com/', :body => fixture('home.html')
4
- FakeWeb.register_uri :get, 'http://news.ycombinator.com/newest', :body => fixture('newest.html')
5
- FakeWeb.register_uri :get, 'http://news.ycombinator.com/best', :body => fixture('best.html')
3
+ FakeWeb.register_uri :get, 'https://news.ycombinator.com/', :body => fixture('home.html')
4
+ FakeWeb.register_uri :get, 'https://news.ycombinator.com/newest', :body => fixture('newest.html')
5
+ FakeWeb.register_uri :get, 'https://news.ycombinator.com/best', :body => fixture('best.html')
6
6
 
7
7
  module HackerNews
8
8
  describe EntryParser do
@@ -18,10 +18,10 @@ module HackerNews
18
18
  entries.each do |entry|
19
19
  entry.id.should > 4000000
20
20
  entry.username.should =~ /\w+/
21
- entry.link.should =~ /^http/
21
+ entry.link.should =~ /^https/
22
22
  entry.title.should_not be_empty
23
23
  entry.num_comments.should >= 0
24
- entry.site.should_not =~ /^http/
24
+ entry.site.should_not =~ /^https/
25
25
  entry.points.should_not == 0
26
26
 
27
27
  entry.submitted_at.should < Time.now
@@ -37,15 +37,15 @@ module HackerNews
37
37
  entries.each do |entry|
38
38
  entry.id.should > 4000000
39
39
  entry.username.should =~ /\w+/
40
- entry.link.should =~ /^http/
40
+ entry.link.should =~ /^https/
41
41
 
42
42
  if entry.site.nil? # ASK HN
43
- entry.id.should == entry.link.match(/^http:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
43
+ entry.id.should == entry.link.match(/^https:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
44
44
  end
45
45
 
46
46
  entry.title.should_not be_empty
47
47
  entry.num_comments.should >= 0
48
- entry.site.should_not =~ /^http/
48
+ entry.site.should_not =~ /^https/
49
49
  entry.points.should >= 0
50
50
  entry.submitted_at.should < Time.now
51
51
  end
@@ -60,15 +60,15 @@ module HackerNews
60
60
  entries.each do |entry|
61
61
  entry.id.should > 4000000
62
62
  entry.username.should =~ /\w+/
63
- entry.link.should =~ /^http/
63
+ entry.link.should =~ /^https/
64
64
 
65
65
  if entry.site.nil? # ASK HN
66
- entry.id.should == entry.link.match(/^http:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
66
+ entry.id.should == entry.link.match(/^https:\/\/news\.ycombinator\.com\/item\?id=(\d+)$/)[1].to_i
67
67
  end
68
68
 
69
69
  entry.title.should_not be_empty
70
70
  entry.num_comments.should >= 0
71
- entry.site.should_not =~ /^http/
71
+ entry.site.should_not =~ /^https/
72
72
  entry.points.should >= 0
73
73
  entry.submitted_at.should < Time.now
74
74
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70300323557400 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70300323557400
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rake
27
- requirement: &70300323556980 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70300323556980
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: simplecov
38
- requirement: &70300323556560 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70300323556560
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: fakeweb
49
- requirement: &70300323556140 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70300323556140
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: nokogiri
60
- requirement: &70300323555720 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70300323555720
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: chronic
71
- requirement: &70300323555300 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '0'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70300323555300
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  description: A tiny gem to fetch Hacker News entries
81
111
  email:
82
112
  - afu@forresty.com
@@ -120,21 +150,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
150
  - - ! '>='
121
151
  - !ruby/object:Gem::Version
122
152
  version: '0'
123
- segments:
124
- - 0
125
- hash: 556332051837383682
126
153
  required_rubygems_version: !ruby/object:Gem::Requirement
127
154
  none: false
128
155
  requirements:
129
156
  - - ! '>='
130
157
  - !ruby/object:Gem::Version
131
158
  version: '0'
132
- segments:
133
- - 0
134
- hash: 556332051837383682
135
159
  requirements: []
136
160
  rubyforge_project:
137
- rubygems_version: 1.8.11
161
+ rubygems_version: 1.8.24
138
162
  signing_key:
139
163
  specification_version: 3
140
164
  summary: A tiny gem to fetch Hacker News entries