ruby-hackernews 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require 'rake/testtask'
8
8
 
9
9
  spec = Gem::Specification.new do |s|
10
10
  s.name = 'ruby-hackernews'
11
- s.version = '1.2.0'
11
+ s.version = '1.2.1'
12
12
  s.add_dependency('require_all', '>= 1.1.0')
13
13
  s.add_dependency('mechanize', '>= 1.0.0')
14
14
  s.has_rdoc = false
@@ -37,6 +37,10 @@ class Entry
37
37
  return EntryService.new.get_jobs(pages)
38
38
  end
39
39
 
40
+ def self.find(id)
41
+ return EntryService.new.find_by_id(id)
42
+ end
43
+
40
44
  def time
41
45
  return @time.time
42
46
  end
@@ -16,6 +16,12 @@ class EntryService
16
16
  return entry_infos
17
17
  end
18
18
 
19
+ def find_by_id(id)
20
+ page = agent.get(ConfigurationService.base_url + "item?id=#{id}")
21
+ lines = page.search("table")[2].search("tr")
22
+ return EntryParser.new(lines[0], lines[1]).parse
23
+ end
24
+
19
25
  def get_new_entries(pages = 1)
20
26
  return get_entries(pages, ConfigurationService.new_url)
21
27
  end
@@ -7,8 +7,17 @@ class EntryParser
7
7
  end
8
8
 
9
9
  def parse
10
- number = @first_line.search("[@class='title']")[0].inner_html.sub(".","").to_i
11
- link = LinkInfoParser.new(@first_line.search("[@class='title']")[1]).parse
10
+ first_line_title = @first_line.search("[@class='title']")
11
+ number_segment = nil
12
+ link_segment = nil
13
+ if(first_line_title.length > 1)
14
+ number_segment = first_line_title[0]
15
+ link_segment = first_line_title[1]
16
+ else
17
+ link_segment = first_line_title[0]
18
+ end
19
+ number = number_segment.inner_html.sub(".","").to_i if number_segment
20
+ link = LinkInfoParser.new(link_segment).parse
12
21
  voting = VotingInfoParser.new(@first_line.search("td/center/a"), @second_line.search("[@class='subtext']")[0]).parse
13
22
  user = UserInfoParser.new(@second_line.search("[@class='subtext']")[0]).parse
14
23
  comments = CommentsInfoParser.new(@second_line.search("[@class='subtext']")[0]).parse
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-hackernews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
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-04-01 00:00:00.000000000 Z
12
+ date: 2012-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: require_all
16
- requirement: &9448240 !ruby/object:Gem::Requirement
16
+ requirement: &18134820 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *9448240
24
+ version_requirements: *18134820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mechanize
27
- requirement: &9447760 !ruby/object:Gem::Requirement
27
+ requirement: &18134360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *9447760
35
+ version_requirements: *18134360
36
36
  description: An interface to Hacker News
37
37
  email: andrea@andreadallera.com
38
38
  executables: []
@@ -41,31 +41,31 @@ extra_rdoc_files: []
41
41
  files:
42
42
  - README.rdoc
43
43
  - Rakefile
44
- - lib/ruby-hackernews/services/not_authenticated_error.rb
45
- - lib/ruby-hackernews/services/parsers/comments_info_parser.rb
46
- - lib/ruby-hackernews/services/parsers/link_info_parser.rb
47
- - lib/ruby-hackernews/services/parsers/entry_page_parser.rb
48
- - lib/ruby-hackernews/services/parsers/user_info_parser.rb
44
+ - lib/ruby-hackernews.rb
45
+ - lib/ruby-hackernews/services/voting_service.rb
49
46
  - lib/ruby-hackernews/services/parsers/time_info_parser.rb
50
- - lib/ruby-hackernews/services/parsers/voting_info_parser.rb
47
+ - lib/ruby-hackernews/services/parsers/link_info_parser.rb
51
48
  - lib/ruby-hackernews/services/parsers/entry_parser.rb
52
- - lib/ruby-hackernews/services/user_info_service.rb
53
- - lib/ruby-hackernews/services/signup_service.rb
49
+ - lib/ruby-hackernews/services/parsers/voting_info_parser.rb
50
+ - lib/ruby-hackernews/services/parsers/comments_info_parser.rb
51
+ - lib/ruby-hackernews/services/parsers/user_info_parser.rb
52
+ - lib/ruby-hackernews/services/parsers/entry_page_parser.rb
53
+ - lib/ruby-hackernews/services/not_authenticated_error.rb
54
54
  - lib/ruby-hackernews/services/entry_service.rb
55
- - lib/ruby-hackernews/services/login_service.rb
55
+ - lib/ruby-hackernews/services/comment_service.rb
56
56
  - lib/ruby-hackernews/services/configuration_service.rb
57
+ - lib/ruby-hackernews/services/signup_service.rb
58
+ - lib/ruby-hackernews/services/user_info_service.rb
57
59
  - lib/ruby-hackernews/services/mechanize_context.rb
58
- - lib/ruby-hackernews/services/comment_service.rb
59
- - lib/ruby-hackernews/services/voting_service.rb
60
- - lib/ruby-hackernews/domain/entry/link_info.rb
61
- - lib/ruby-hackernews/domain/entry/time_info.rb
60
+ - lib/ruby-hackernews/services/login_service.rb
61
+ - lib/ruby-hackernews/domain/comment/comment.rb
62
+ - lib/ruby-hackernews/domain/user.rb
62
63
  - lib/ruby-hackernews/domain/entry/entry.rb
63
- - lib/ruby-hackernews/domain/entry/user_info.rb
64
64
  - lib/ruby-hackernews/domain/entry/comments_info.rb
65
65
  - lib/ruby-hackernews/domain/entry/voting_info.rb
66
- - lib/ruby-hackernews/domain/user.rb
67
- - lib/ruby-hackernews/domain/comment/comment.rb
68
- - lib/ruby-hackernews.rb
66
+ - lib/ruby-hackernews/domain/entry/time_info.rb
67
+ - lib/ruby-hackernews/domain/entry/link_info.rb
68
+ - lib/ruby-hackernews/domain/entry/user_info.rb
69
69
  homepage: http://github.com/bolthar/ruby-hackernews
70
70
  licenses: []
71
71
  post_install_message:
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 1.8.17
89
+ rubygems_version: 1.8.10
90
90
  signing_key:
91
91
  specification_version: 3
92
92
  summary: An interface to Hacker News