hnrb 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/lib/hnrb.rb +33 -31
- data/lib/hnrb/item.rb +11 -9
- data/lib/hnrb/user.rb +11 -9
- data/lib/hnrb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 652e5e022c535b11b53a1c909b560591f41a9833
|
4
|
+
data.tar.gz: c16d82b51474a9a20181e36b553d56b62ca3566a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2af77e93d21b5102982fd11f195b61aa12845ffcd4639fb536af280ec7e1dcdfe27baefd0f4be39cafd1c33c1096fff84521a90663c1059e889067bbd355a32
|
7
|
+
data.tar.gz: c69d7f15e021470a1fab796a2e3275af2aef9bd82308e085d29f0e46e0a25d69e3f4a6e8d13f2fb6f950c9974bbdd1aff257d73b8c607f553ef7c03c34153406
|
data/lib/hnrb.rb
CHANGED
@@ -4,45 +4,47 @@ require 'net/http'
|
|
4
4
|
require 'hnrb/user'
|
5
5
|
require 'hnrb/item'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
module HNrb
|
8
|
+
class APIWrapper
|
9
|
+
|
10
|
+
BASE_URL = "https://hacker-news.firebaseio.com/v0/"
|
11
|
+
|
12
|
+
def fetch_json_at(url)
|
13
|
+
resp = Net::HTTP.get_response(URI.parse(url))
|
14
|
+
begin
|
15
|
+
JSON.parse(resp.body)
|
16
|
+
rescue
|
17
|
+
resp.body
|
18
|
+
end
|
19
|
+
end
|
10
20
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
21
|
+
def send_get_request_to(endpoint)
|
22
|
+
begin
|
23
|
+
fetch_json_at endpoint
|
24
|
+
rescue
|
25
|
+
raise "The requested resource is not available"
|
26
|
+
end
|
17
27
|
end
|
18
|
-
end
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
fetch_json_at endpoint
|
23
|
-
rescue
|
24
|
-
raise "The requested resource is not available"
|
29
|
+
def get_item(item_id)
|
30
|
+
Item.new(send_get_request_to BASE_URL + "item/#{item_id}.json")
|
25
31
|
end
|
26
|
-
end
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
def get_user(username)
|
34
|
+
User.new(send_get_request_to BASE_URL + "user/#{username}.json")
|
35
|
+
end
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
|
37
|
+
def get_top_stories
|
38
|
+
send_get_request_to BASE_URL + "topstories.json"
|
39
|
+
end
|
35
40
|
|
36
|
-
|
37
|
-
|
38
|
-
|
41
|
+
def get_max_item_id
|
42
|
+
send_get_request_to BASE_URL + "maxitem.json"
|
43
|
+
end
|
39
44
|
|
40
|
-
|
41
|
-
|
42
|
-
|
45
|
+
def get_changed_items_and_profiles
|
46
|
+
send_get_request_to BASE_URL + "updates.json"
|
47
|
+
end
|
43
48
|
|
44
|
-
def get_changed_items_and_profiles
|
45
|
-
send_get_request_to BASE_URL + "updates.json"
|
46
49
|
end
|
47
|
-
|
48
50
|
end
|
data/lib/hnrb/item.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
|
1
|
+
module HNrb
|
2
|
+
class Item
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
PROPERTIES = [:id, :deleted, :type, :by, :time, :text, :dead, :parent, :kids, :url, :score, :title, :parts]
|
5
|
+
PROPERTIES.each do |p|
|
6
|
+
attr_accessor p
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
def initialize(attributes = {})
|
10
|
+
attributes.each do |k, v|
|
11
|
+
self.send("#{k.to_sym}=", v) if PROPERTIES.member? k.to_sym
|
12
|
+
end
|
11
13
|
end
|
12
|
-
end
|
13
14
|
|
15
|
+
end
|
14
16
|
end
|
data/lib/hnrb/user.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
|
1
|
+
module HNrb
|
2
|
+
class User
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
PROPERTIES = [:id, :delay, :created, :karma, :about, :submitted]
|
5
|
+
PROPERTIES.each do |p|
|
6
|
+
attr_accessor p
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
def initialize(attributes = {})
|
10
|
+
attributes.each do |k, v|
|
11
|
+
self.send("#{k.to_sym}=", v) if PROPERTIES.member? k.to_sym
|
12
|
+
end
|
11
13
|
end
|
12
|
-
end
|
13
14
|
|
15
|
+
end
|
14
16
|
end
|
data/lib/hnrb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hnrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jingwen Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A ruby interface for Hacker News API at Firebase.
|
14
14
|
email: jin@crypt.sg
|