hnjobs 0.0.2 → 0.0.3

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