hn 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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