ruby-hackernews 1.3.1 → 1.3.2
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.rdoc +10 -0
- data/Rakefile +1 -1
- data/lib/ruby-hackernews/domain/comment/comment.rb +10 -1
- data/lib/ruby-hackernews/services/comment_service.rb +12 -1
- metadata +24 -24
data/README.rdoc
CHANGED
@@ -59,6 +59,9 @@ Each Entry instance has the following data:
|
|
59
59
|
|
60
60
|
entry.time # the elapsed time from submission
|
61
61
|
|
62
|
+
entry.text # the text of the submission (ask/jobs only)
|
63
|
+
# NOTE: it will fetch the inner page
|
64
|
+
|
62
65
|
After you've logged in (see below) you can do the following
|
63
66
|
|
64
67
|
entry.upvote # votes the entry
|
@@ -74,6 +77,11 @@ You get an entry's comments with:
|
|
74
77
|
|
75
78
|
entry.comments
|
76
79
|
|
80
|
+
You can also get a specific comment by id with:
|
81
|
+
|
82
|
+
Comment.find("1234") # returns the comments with id 1234,
|
83
|
+
# and its subcomments.
|
84
|
+
|
77
85
|
Note that the method above will send a request to HN. If you just need the comments' count or url, you can instead use:
|
78
86
|
|
79
87
|
entry.comments_count
|
@@ -93,6 +101,7 @@ Each Comment instance has the following data:
|
|
93
101
|
|
94
102
|
comment = Entry.all.first.comments.first # gets the first comment of the first entry on HN's main page
|
95
103
|
|
104
|
+
comment.id # comment's unique identifier
|
96
105
|
comment.text # comment's body
|
97
106
|
comment.user.name # poster's user name on HN
|
98
107
|
comment.voting.score # comment's score
|
@@ -158,3 +167,4 @@ Will return the HN comment url of the last submitted story of that user
|
|
158
167
|
- Josh Ellington ( http://github.com/joshellington ) for reporting a bug about job entries
|
159
168
|
- Wayne ( http://github.com/BlissOfBeing ) for adding User.submissions, Entry.comments_url and cleaning up the Rakefile
|
160
169
|
- Daniel Da Cunha ( http://github.com/ddacunha ) for a fix on Entry#comments_count
|
170
|
+
- Nathan Campos ( http://github.com/nathanpc) for adding #text to Entry
|
data/Rakefile
CHANGED
@@ -9,14 +9,19 @@ module RubyHackernews
|
|
9
9
|
|
10
10
|
attr_accessor :parent
|
11
11
|
|
12
|
-
def initialize(text, voting, user_info, reply_link)
|
12
|
+
def initialize(text, voting, user_info, reply_link, absolute_link)
|
13
13
|
@text = text
|
14
14
|
@voting = voting
|
15
15
|
@user = user_info
|
16
16
|
@reply_link = reply_link
|
17
|
+
@absolute_link = absolute_link
|
17
18
|
@children = []
|
18
19
|
end
|
19
20
|
|
21
|
+
def id
|
22
|
+
return @absolute_link.split("=")[1].to_i
|
23
|
+
end
|
24
|
+
|
20
25
|
def <<(comment)
|
21
26
|
comment.parent = self
|
22
27
|
@children << comment
|
@@ -38,6 +43,10 @@ module RubyHackernews
|
|
38
43
|
return CommentService.new.get_new_comments(pages)
|
39
44
|
end
|
40
45
|
|
46
|
+
def self.find(id)
|
47
|
+
return CommentService.new.find_by_id(id)
|
48
|
+
end
|
49
|
+
|
41
50
|
def reply(text)
|
42
51
|
return false unless @reply_link
|
43
52
|
CommentService.new.write_comment(@reply_link, text)
|
@@ -14,6 +14,15 @@ module RubyHackernews
|
|
14
14
|
return get_comments_entities(table)
|
15
15
|
end
|
16
16
|
|
17
|
+
def find_by_id(id)
|
18
|
+
page = agent.get(ConfigurationService.base_url + "item?id=#{id}")
|
19
|
+
comment = parse_comment(page.search("table")[2].search("tr").first)
|
20
|
+
get_comments_entities(page.search("table")[3]).each do |c|
|
21
|
+
comment << c
|
22
|
+
end
|
23
|
+
return comment
|
24
|
+
end
|
25
|
+
|
17
26
|
def get_comments_entities(table)
|
18
27
|
comments = []
|
19
28
|
target = comments
|
@@ -58,7 +67,9 @@ module RubyHackernews
|
|
58
67
|
user_info = UserInfoParser.new(header).parse
|
59
68
|
reply_link = element.search("td[@class='default']/p//u//a").first
|
60
69
|
reply_url = reply_link['href'] if reply_link
|
61
|
-
|
70
|
+
absolute_link_group = header.search("a")
|
71
|
+
absolute_url = absolute_link_group.count == 2 ? absolute_link_group[1]['href'] : nil
|
72
|
+
return Comment.new(text, voting, user_info, reply_url, absolute_url)
|
62
73
|
end
|
63
74
|
|
64
75
|
def write_comment(page_url, comment)
|
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.3.
|
4
|
+
version: 1.3.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: require_all
|
@@ -51,34 +51,34 @@ extra_rdoc_files: []
|
|
51
51
|
files:
|
52
52
|
- README.rdoc
|
53
53
|
- Rakefile
|
54
|
-
- lib/ruby-hackernews.rb
|
54
|
+
- lib/ruby-hackernews/domain/comment/comment.rb
|
55
|
+
- lib/ruby-hackernews/domain/entry/user_info.rb
|
56
|
+
- lib/ruby-hackernews/domain/entry/time_info.rb
|
57
|
+
- lib/ruby-hackernews/domain/entry/entry.rb
|
58
|
+
- lib/ruby-hackernews/domain/entry/link_info.rb
|
59
|
+
- lib/ruby-hackernews/domain/entry/voting_info.rb
|
60
|
+
- lib/ruby-hackernews/domain/entry/comments_info.rb
|
61
|
+
- lib/ruby-hackernews/domain/user.rb
|
55
62
|
- lib/ruby-hackernews/services/comment_service.rb
|
56
|
-
- lib/ruby-hackernews/services/entry_service.rb
|
57
|
-
- lib/ruby-hackernews/services/voting_service.rb
|
58
63
|
- lib/ruby-hackernews/services/text_service.rb
|
59
|
-
- lib/ruby-hackernews/services/parsers/entry_page_parser.rb
|
60
|
-
- lib/ruby-hackernews/services/parsers/comments_info_parser.rb
|
61
|
-
- lib/ruby-hackernews/services/parsers/voting_info_parser.rb
|
62
|
-
- lib/ruby-hackernews/services/parsers/entry_parser.rb
|
63
|
-
- lib/ruby-hackernews/services/parsers/user_info_parser.rb
|
64
|
-
- lib/ruby-hackernews/services/parsers/link_info_parser.rb
|
65
|
-
- lib/ruby-hackernews/services/parsers/text_parser.rb
|
66
|
-
- lib/ruby-hackernews/services/parsers/time_info_parser.rb
|
67
|
-
- lib/ruby-hackernews/services/login_service.rb
|
68
|
-
- lib/ruby-hackernews/services/signup_service.rb
|
69
|
-
- lib/ruby-hackernews/services/not_authenticated_error.rb
|
70
64
|
- lib/ruby-hackernews/services/user_info_service.rb
|
71
65
|
- lib/ruby-hackernews/services/mechanize_context.rb
|
66
|
+
- lib/ruby-hackernews/services/entry_service.rb
|
67
|
+
- lib/ruby-hackernews/services/not_authenticated_error.rb
|
68
|
+
- lib/ruby-hackernews/services/login_service.rb
|
72
69
|
- lib/ruby-hackernews/services/page_fetcher.rb
|
70
|
+
- lib/ruby-hackernews/services/parsers/user_info_parser.rb
|
71
|
+
- lib/ruby-hackernews/services/parsers/link_info_parser.rb
|
72
|
+
- lib/ruby-hackernews/services/parsers/entry_parser.rb
|
73
|
+
- lib/ruby-hackernews/services/parsers/time_info_parser.rb
|
74
|
+
- lib/ruby-hackernews/services/parsers/text_parser.rb
|
75
|
+
- lib/ruby-hackernews/services/parsers/entry_page_parser.rb
|
76
|
+
- lib/ruby-hackernews/services/parsers/comments_info_parser.rb
|
77
|
+
- lib/ruby-hackernews/services/parsers/voting_info_parser.rb
|
73
78
|
- lib/ruby-hackernews/services/configuration_service.rb
|
74
|
-
- lib/ruby-hackernews/
|
75
|
-
- lib/ruby-hackernews/
|
76
|
-
- lib/ruby-hackernews
|
77
|
-
- lib/ruby-hackernews/domain/entry/user_info.rb
|
78
|
-
- lib/ruby-hackernews/domain/entry/voting_info.rb
|
79
|
-
- lib/ruby-hackernews/domain/entry/comments_info.rb
|
80
|
-
- lib/ruby-hackernews/domain/entry/entry.rb
|
81
|
-
- lib/ruby-hackernews/domain/comment/comment.rb
|
79
|
+
- lib/ruby-hackernews/services/voting_service.rb
|
80
|
+
- lib/ruby-hackernews/services/signup_service.rb
|
81
|
+
- lib/ruby-hackernews.rb
|
82
82
|
homepage: http://github.com/bolthar/ruby-hackernews
|
83
83
|
licenses: []
|
84
84
|
post_install_message:
|