papercall 0.14.0 → 0.15.0

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