class Cirneco::Doi
Public Instance Methods
accession_number()
click to toggle source
# File lib/cirneco/doi.rb, line 92 def accession_number puts generate_accession_number(options) end
bulk_state_change(file)
click to toggle source
# File lib/cirneco/doi.rb, line 148 def bulk_state_change(file) count = 0 File.foreach(file) do |line| doi = line.rstrip next unless doi.present? previous_state, operation = case options[:target_state] when "findable" ["registered", "publish"] when "registered" ["draft", "register"] end meta = generate_state_change_template({operation: operation}) metadata_reponse = get_rest_doi(doi, options) unless [200].include?(metadata_reponse.status) puts "#{doi} was not found #{metadata_reponse.status}" next end metadata = JSON.parse(metadata_reponse.body.fetch("data", [])) if metadata.dig("data","attributes","state") == previous_state response = update_rest_doi(doi, options.merge(data: meta.to_json)) else puts "#{doi} is in the wrong state for change. #{doi} was not changed" next end if [200, 201].include?(response.status) puts "#{doi} Updated to #{options[:target_state]}." count += 1 else puts "Error: #{doi} " + response.body["errors"].first.fetch("title", "An error occured") end end puts "#{count} DOIs updated." end
check(doi)
click to toggle source
# File lib/cirneco/doi.rb, line 108 def check(doi) unless decode_doi(doi).nil? puts "Checksum for #{doi} is valid" else puts "Checksum for #{doi} is not valid" end end
decode(doi)
click to toggle source
# File lib/cirneco/doi.rb, line 97 def decode(doi) number = decode_doi(doi) unless number.nil? puts "DOI #{doi} was encoded with #{number}" else puts "DOI #{doi} could not be decoded" end end
generate()
click to toggle source
# File lib/cirneco/doi.rb, line 80 def generate if options[:prefix] puts encode_doi(options[:prefix], number: options[:number]) else puts "No PREFIX provided. Use --prefix option or PREFIX ENV variable" end end
get(doi)
click to toggle source
# File lib/cirneco/doi.rb, line 21 def get(doi) if doi == "all" response = get_dois(options) else response = get_doi(doi, options) end if response.body["errors"] puts "Error: " + response.body["errors"].first.fetch("title", "An error occured") elsif doi == "all" puts response.body["data"][0...options[:limit]] else puts response.body["data"] end end
post(file)
click to toggle source
# File lib/cirneco/doi.rb, line 56 def post(file) data = JSON.parse(IO.read(file)) count = 0 data.each do |json| doi = doi_from_url(json["@id"]) url = json["url"] next unless doi.present? && url.present? response = put_doi(doi, options.merge(url: url)) if [200, 201].include?(response.status) puts "#{doi} registered/updated." count += 1 else puts "Error: " + response.body["errors"].first.fetch("title", "An error occured") end end puts "#{count} DOIs registered/updated." end
put(doi)
click to toggle source
# File lib/cirneco/doi.rb, line 42 def put(doi) response = put_doi(doi, options) if response.body["errors"] puts "Error: " + response.body["errors"].first.fetch("title", "An error occured") else puts response.body["data"] end end
transfer(file)
click to toggle source
# File lib/cirneco/doi.rb, line 122 def transfer(file) count = 0 File.foreach(file) do |line| doi = line.rstrip next unless doi.present? meta = generate_transfer_template(options) response = transfer_doi(doi, options.merge(data: meta.to_json)) if [200, 201].include?(response.status) puts "#{doi} Transfered to #{options[:target]}." count += 1 else puts "Error: " + response.body["errors"].first.fetch("title", "An error occured") end end puts "#{count} DOIs transfered." end