class Papercall::RestFetcher
Fetches submissions from Papercall
REST API Params:
Constants
- SUBMISSIONS_URL
Public Class Methods
new()
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 15 def initialize() @output = Papercall.configuration.output api_key = Papercall.configuration.API_KEY raise ArgumentError, 'Missing API_KEY for access to Papercall. Please refer to documentation for instructions on setting this value.' unless api_key @auth_hash = { Authorization: api_key } @submitted = [] @accepted = [] @rejected = [] @waitlist = [] @declined = [] end
Public Instance Methods
fetch(*states)
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 43 def fetch(*states) states = [%i[submitted accepted rejected waitlist declined]] if states == [[:all]] states.flatten.each do |state| next unless state start_time = Time.now print "Fetching #{state} submissions from PaperCall API..." if @output submissions = papercall(submission_url(state.to_s)) instance_variable_set("@#{state}_raw", submissions) instance_variable_set("@#{state}", submissions.map {|s| Submission.new(s)}) puts "finished in #{Time.now - start_time} seconds." if @output end fetch_ratings fetch_feedback end
fetch_feedback()
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 73 def fetch_feedback start_time = Time.now print 'Fetching feedback for all submissions from Papercall API...' if @output Parallel.each(analysis, in_threads: 128) do |submission| if submission.feedback.empty? feedback_url = "#{SUBMISSIONS_URL}/#{submission.id}/feedback" submission.feedback = papercall(feedback_url).map {|f| Feedback.new(f)} end #submission.feedback = [] unless submission.feedback end puts "finished in #{Time.now - start_time} seconds." if @output end
fetch_ratings()
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 58 def fetch_ratings start_time = Time.now print 'Fetching ratings for all submissions from Papercall API...' if @output Parallel.each(analysis, in_threads: 128) do |submission| if submission.ratings.empty? ratings_url = "#{SUBMISSIONS_URL}/#{submission.id}/ratings" ratings = papercall(ratings_url).map {|r| Rating.new(r)} submission.ratings = ratings end #submission.ratings = [] unless submission.ratings end puts "finished in #{Time.now - start_time} seconds." if @output end
papercall(papercall_url)
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 31 def papercall(papercall_url) raw_results = RestClient::Request.execute(method: :get, url: papercall_url, headers: @auth_hash) # :timeout => 120 if raw_results JSON.parse(raw_results).map {|r| r.with_indifferent_access} else [] end end
submission_url(state, per_page: 150)
click to toggle source
# File lib/papercall/rest_fetcher.rb, line 27 def submission_url(state, per_page: 150) "#{SUBMISSIONS_URL}?state=#{state}&per_page=#{per_page}" end