papercall 0.14.0 → 0.15.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d45807b08724dd63c5bb8dae2fd98930e55d9e24
4
- data.tar.gz: 92dcc33bee8e958c271bc98a279baf8421b0c2fe
3
+ metadata.gz: ab9ff289a7b73ca13abe407dbf7faf36ad50e5f5
4
+ data.tar.gz: eca379283228ab7e574ad8ce594e7b73db34bd37
5
5
  SHA512:
6
- metadata.gz: 47419fa06b5dc107315a84b65c78f310eb31702f68375faa98703c1ca7ba3aa05bb1cf16f2f6ea9e47f4c90f4408c1115326b197b43b3217c987a9b443480c44
7
- data.tar.gz: 17eb8b781906f9a23e90de7e1613d38f96cd546ec4aec8e89e410af2635f43e260e824f8fc2754f71d7414cfafe7a23814039f76b677b8d14e4a43cde3bcda65
6
+ metadata.gz: d10215d20228deb40b8102efa206a9af260767cfe87899729ce134f1f1213c4c58b43f3e1e6c3bf21a4eba222bcf8da52ba022ef46bee82a96603c4d43ef8876
7
+ data.tar.gz: 478adce38dd114a1ce2e3a8606bfc7acf382577d98254bbbb89e0ea35fe25b5c90ba3d1f4b7bb55b6c2e05d1cb9f04945796a1d6f13b40de58901f74c77f60ee
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  /*.json
11
11
  /*.rb
12
12
  /*.gem
13
+ /*.idea
@@ -19,26 +19,26 @@ module Papercall
19
19
 
20
20
  def analyze
21
21
  startTime = Time.now
22
- print "Performing analysis..."
22
+ print 'Performing analysis...'
23
23
  @analysis['submissions'].each do |submission|
24
- submission["ratings"].each do |rating|
25
- unless(@analysis['reviewers'].include?(rating["user"]["name"]))
26
- @analysis['reviewers'][rating["user"]["name"]] = [{:id => rating["submission_id"]}]
24
+ submission['ratings'].each do |rating|
25
+ if !(@analysis['reviewers'].include? rating['user']['name'])
26
+ @analysis['reviewers'][rating['user']['name']] = [{:id => rating['submission_id']}]
27
27
  else
28
- @analysis['reviewers'][rating['user']['name']] << {:id => rating["submission_id"]}
28
+ @analysis['reviewers'][rating['user']['name']] << {:id => rating['submission_id']}
29
29
  end
30
30
  end
31
- @analysis['talksWithoutReviews'] << {:id => submission["id"], :submission => submission} if submission["ratings"].empty?
32
- @analysis['talksWithFourOrMoreReviews'] << {:id => submission["id"], :submission => submission} if submission["ratings"].size >= 4
33
- @analysis['talksWithLessThanThreeReviews'] << {:id => submission["id"], :submission => submission} if submission["ratings"].size < 3
34
- @analysis['talksWithoutFeedback'] << {:id => submission["id"], :submission => submission} if submission["feedback"].empty?
35
- @analysis['highlyRated'] << {:id => submission["id"], :submission => submission} if highlyRated? submission
36
- @analysis['lowRated'] << {:id => submission["id"], :submission => submission} if lowRated? submission
37
- @analysis['maybe'] << {:id => submission["id"], :submission => submission} if maybe? submission
38
- @analysis['accepted'] << {:id => submission["id"], :submission => submission} if accepted? submission
39
- @analysis['waitlist'] << {:id => submission["id"], :submission => submission} if waitlisted? submission
40
- @analysis['rejected'] << {:id => submission["id"], :submission => submission} if rejected? submission
41
- @analysis['confirmed'] << {:id => submission["id"], :submission => submission} if confirmed? submission
31
+ @analysis['talksWithoutReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].empty?
32
+ @analysis['talksWithFourOrMoreReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].size >= 4
33
+ @analysis['talksWithLessThanThreeReviews'] << {:id => submission['id'], :submission => submission} if submission['ratings'].size < 3
34
+ @analysis['talksWithoutFeedback'] << {:id => submission['id'], :submission => submission} if submission['feedback'].empty?
35
+ @analysis['highlyRated'] << {:id => submission['id'], :submission => submission} if highlyRated? submission
36
+ @analysis['lowRated'] << {:id => submission['id'], :submission => submission} if lowRated? submission
37
+ @analysis['maybe'] << {:id => submission['id'], :submission => submission} if maybe? submission
38
+ @analysis['accepted'] << {:id => submission['id'], :submission => submission} if accepted? submission
39
+ @analysis['waitlist'] << {:id => submission['id'], :submission => submission} if waitlisted? submission
40
+ @analysis['rejected'] << {:id => submission['id'], :submission => submission} if rejected? submission
41
+ @analysis['confirmed'] << {:id => submission['id'], :submission => submission} if confirmed? submission
42
42
  end
43
43
  @analysis['summary'] = summary
44
44
  puts "finished in #{Time.now - startTime} seconds."
@@ -48,11 +48,11 @@ module Papercall
48
48
  private
49
49
 
50
50
  def highlyRated?(submission)
51
- submission["rating"] >= 75 && review_complete?(submission)
51
+ submission['rating'] >= 75 && review_complete?(submission)
52
52
  end
53
53
 
54
54
  def lowRated?(submission)
55
- submission["rating"] <= 25 && review_complete?(submission)
55
+ submission['rating'] <= 25 && review_complete?(submission)
56
56
  end
57
57
 
58
58
  def maybe?(submission)
@@ -60,23 +60,23 @@ module Papercall
60
60
  end
61
61
 
62
62
  def review_complete?(submission)
63
- submission["ratings"].size >= 3
63
+ submission['ratings'].size >= 3
64
64
  end
65
65
 
66
66
  def accepted?(submission)
67
- submission["state"] == "accepted"
67
+ submission['state'] == 'accepted'
68
68
  end
69
69
 
70
70
  def rejected?(submission)
71
- submission["state"] == "rejected"
71
+ submission['state'] == 'rejected'
72
72
  end
73
73
 
74
74
  def waitlisted?(submission)
75
- submission["state"] == "waitlist"
75
+ submission['state'] == 'waitlist'
76
76
  end
77
77
 
78
78
  def confirmed?(submission)
79
- accepted?(submission) && submission["confirmed"] == true
79
+ accepted?(submission) && submission['confirmed'] == true
80
80
  end
81
81
 
82
82
  def summary
@@ -1,5 +1,6 @@
1
1
  require 'json'
2
2
  require 'rest-client'
3
+ require 'parallel'
3
4
 
4
5
  module Papercall
5
6
  #Fetches submissions from Papercall REST API
@@ -25,43 +26,49 @@ module Papercall
25
26
  RestClient::Request.execute(method: :get,
26
27
  url: papercall_url,
27
28
  headers: @auth_hash) # :timeout => 120
28
- JSON.parse raw_results
29
+ if raw_results
30
+ JSON.parse raw_results
31
+ else
32
+ []
33
+ end
29
34
  end
30
35
 
31
36
  def fetch(*states)
32
- states = [[:submitted, :accepted, :rejected, :waitlist, :declined]] if states == [[:all]]
37
+ states = [%i[submitted accepted rejected waitlist declined]] if states == [[:all]]
33
38
  states.flatten.each do |state|
34
- if state
35
- startTime = Time.now
36
- print "Fetching #{state} submissions from PaperCall API..."
37
- instance_variable_set("@#{state}", papercall(submission_url(state.to_s)))
38
- puts "finished in #{Time.now - startTime} seconds."
39
- end
39
+ next unless state
40
+ start_time = Time.now
41
+ print "Fetching #{state} submissions from PaperCall API..."
42
+ instance_variable_set("@#{state}", papercall(submission_url(state.to_s)))
43
+ puts "finished in #{Time.now - start_time} seconds."
40
44
  end
41
45
  fetch_ratings
42
46
  fetch_feedback
43
47
  end
44
48
 
45
49
  def fetch_ratings
46
- startTime = Time.now
50
+ start_time = Time.now
47
51
  print "Fetching ratings for all submissions from Papercall API..."
48
- analysis.each do |submission|
52
+
53
+ Parallel.each(analysis, in_threads: 8) do |submission|
49
54
  unless submission['ratings']
50
55
  ratings_url = "#{SUBMISSIONS_URL}/#{submission['id']}/ratings"
51
56
  submission['ratings'] = papercall(ratings_url)
52
57
  end
58
+ submission['ratings'] = [] unless submission['ratings']
53
59
  end
54
- puts "finished in #{Time.now - startTime} seconds."
60
+ puts "finished in #{Time.now - start_time} seconds."
55
61
  end
56
62
 
57
63
  def fetch_feedback
58
64
  startTime = Time.now
59
65
  print "Fetching feedback for all submissions from Papercall API..."
60
- analysis.each do |submission|
66
+ Parallel.each(analysis, in_threads: 8) do |submission|
61
67
  unless submission['feedback']
62
68
  feedback_url = "#{SUBMISSIONS_URL}/#{submission['id']}/feedback"
63
69
  submission['feedback'] = papercall(feedback_url)
64
70
  end
71
+ submission['feedback'] = [] unless submission['feedback']
65
72
  end
66
73
  puts "finished in #{Time.now - startTime} seconds."
67
74
  end
@@ -1,3 +1,3 @@
1
1
  module Papercall
2
- VERSION = '0.14.0'.freeze
2
+ VERSION = '0.15.0'.freeze
3
3
  end
data/papercall.gemspec CHANGED
@@ -33,4 +33,5 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "rest-client", "~> 2.0", ">= 2.0.2"
34
34
  spec.add_dependency "activesupport", "~> 5.0"
35
35
  spec.add_dependency "i18n", "~> 0.9.1"
36
+ spec.add_dependency "parallel", "~> 1.12.1"
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: papercall
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jørn Ølmheim
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-29 00:00:00.000000000 Z
11
+ date: 2018-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -176,6 +176,20 @@ dependencies:
176
176
  - - "~>"
177
177
  - !ruby/object:Gem::Version
178
178
  version: 0.9.1
179
+ - !ruby/object:Gem::Dependency
180
+ name: parallel
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 1.12.1
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 1.12.1
179
193
  description: Small client library for the PaperCall API. With some analytics for the
180
194
  submissions.
181
195
  email:
@@ -225,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
239
  version: '0'
226
240
  requirements: []
227
241
  rubyforge_project:
228
- rubygems_version: 2.6.12
242
+ rubygems_version: 2.6.14
229
243
  signing_key:
230
244
  specification_version: 4
231
245
  summary: Small client library for the PaperCall API