class Sufia::Arkivo::CreateSubscriptionJob
Attributes
user[R]
Public Instance Methods
perform(user_key)
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 9 def perform(user_key) @user = ::User.find_by_user_key(user_key) validate_user! # post json to API response = post_to_api # parse results subscription_path = response.headers['Location'] # create subscription user.arkivo_subscription = subscription_path user.save end
Private Instance Methods
log_and_raise(message)
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 35 def log_and_raise(message) logger.error "*** Arkivo error: #{message}: #{user}" raise SubscriptionError, message end
logger()
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 24 def logger ActiveFedora::Base.logger end
new_subscription_json()
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 48 def new_subscription_json { url: Sufia::Zotero.publications_url(@user.zotero_userid), plugins: [ { name: "sufia", options: { token: @user.arkivo_token } } ] }.to_json end
post_to_api()
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 40 def post_to_api Faraday.new(url: Sufia::Arkivo.config[:url]).post do |request| request.url Sufia::Arkivo.new_subscription_url request.headers['Content-Type'] = 'application/json' request.body = new_subscription_json end end
validate_user!()
click to toggle source
# File lib/sufia/arkivo/create_subscription_job.rb, line 28 def validate_user! log_and_raise('User not found') if user.blank? log_and_raise('User does not have an Arkivo token') if user.arkivo_token.blank? log_and_raise('User has not yet connected with Zotero') if user.zotero_userid.blank? log_and_raise('User already has a subscription') if user.arkivo_subscription.present? end