hnjobs 0.0.2 → 0.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hnjobs.rb +18 -5
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2872ed23423a308c0313e7d05493e2a1a287ecd
4
- data.tar.gz: 047978fd4b5a65189a2bbcbf0cbff0000b428140
3
+ metadata.gz: 0532ea5c62233727a16808d509aa3c5b49b94f00
4
+ data.tar.gz: 61bd1bf18f7ac14720549b5ed259ba968dd84ac9
5
5
  SHA512:
6
- metadata.gz: d64502974fd5beb05f28a41b81f004d1e02a3d268f0285168502f0c9bd5cd88eb24ef5cbd064c3e2066aacd758e44767e1f1965740a6c3edad74cfd3e0f306be
7
- data.tar.gz: 620ab3921ff0d096265ec594292240e1079052250343f14083e6427fcc1ccacffea2552c11052731c03e0f4de42dcbde2feaba7cae5c6102de6cbba315f8b19e
6
+ metadata.gz: 5d676970ded7315cb9d5441c6496728217e1a90d9adf246ec6752e837217c08236047b4bfe2fba8af8a4481888c2cf204dd0c01c59929d506bcc9942582f0595
7
+ data.tar.gz: ce5e836da74736e0ee6d04391497d567ea332bb6fb9c4d5513002dd80e366e6581171775e73b45faa95e6184738593f65fe9fc72b8117d1e8fc0d7302e3877a9
@@ -1,19 +1,32 @@
1
1
  require 'json'
2
2
  require 'nokogiri'
3
3
  require 'net/http'
4
+ require 'thread'
5
+
4
6
  class HNJobs
5
7
  BASE_URL = "https://hacker-news.firebaseio.com/v0/"
6
8
  JOBS_URL = BASE_URL + "jobstories.json"
9
+ attr_reader :jobs
7
10
  def initialize
8
11
  @jobs = Array.new
9
12
  uri = URI(JOBS_URL)
10
13
  ids = JSON.parse(Net::HTTP.get(uri))
14
+ @jobs = get_jobs ids
15
+ end
16
+ private
17
+ def get_jobs ids
18
+ mutex = Mutex.new
19
+ threads = Array.new
20
+ jobs = Array.new
11
21
  ids.each do |id|
12
- job_uri = URI(BASE_URL + "item/#{id}.json")
13
- job = JSON.parse(Net::HTTP.get(job_uri))
14
- job["text"] = Nokogiri::HTML(job["text"]).text
15
- @jobs << job
22
+ threads << Thread.new(id, jobs) do |id, jobs|
23
+ job_uri = URI(BASE_URL + "item/#{id}.json")
24
+ job = JSON.parse(Net::HTTP.get(job_uri))
25
+ job["text"] = Nokogiri::HTML(job["text"]).text
26
+ mutex.synchronize{ jobs << job}
27
+ end
16
28
  end
29
+ threads.each(&:join)
30
+ jobs
17
31
  end
18
- attr_reader :jobs
19
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hnjobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hugo Di Francesco