class Object
Public Instance Methods
build_params(opts = {})
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 57 def build_params(opts = {}) params = {} params[:commit] = opts.delete(:commit) parser_fields = { metadata_file_name: opts.delete(:metadata_file_name), metadata_format: opts.delete(:metadata_format), rights_statement: opts.delete(:rights_statement), override_rights_statement: opts.delete(:override_rights_statement), import_file_path: opts.delete(:import_file_path), metadata_prefix: opts.delete(:metadata_prefix), set: opts.delete(:set), collection_name: opts.delete(:collection_name) }.compact params[:importer] = opts.compact params[:importer][:user_id] = opts.delete(:user_id) params[:importer][:admin_set_id] = opts.delete(:admin_set_id) params[:importer][:parser_fields] = parser_fields || {} return params.compact end
build_url(importer_id, url)
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 77 def build_url(importer_id, url) if url.nil? protocol = Rails.application.config.force_ssl ? 'https://' : 'http://' host = Rails.application.config.action_mailer.default_url_options[:host] url = "#{protocol}#{host}" end path = Bulkrax::Engine.routes.url_helpers.polymorphic_path(Bulkrax::Importer) url = File.join(url, path) url = File.join(url, importer_id) if importer_id return url end
help()
click to toggle source
Format the help for the CLI
# File lib/generators/bulkrax/templates/bin/importer, line 99 def help puts 'CREATE:' puts ' bin/importer --name "My Import" --parser_klass Bulkrax::CsvParser --commit "Create and Import" --import_file_path /data/tmp/import.csv --auth_token 12345' puts 'UPDATE:' puts ' bin/importer --importer_id 1 --commit "Update and Re-Import (update metadata only)" --import_file_path /data/tmp/import.csv --auth_token 12345' puts 'PARAMETERS:' Bulkrax.api_definition['bulkrax']['importer'].each_pair do |key, value| next if key == 'parser_fields' puts " --#{key}" value.each_pair do |k, v| next if k == 'contained_in' puts " #{k}: #{v}" end end puts ' --url' puts " Repository URL" exit end
invalid?(opts)
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 46 def invalid?(opts) required_params.each do |p| return true if opts[p.to_sym].blank? end return false end
logger()
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 89 def logger Rails.logger end
main(opts = {})
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 8 def main(opts = {}) if opts[:importer_id].blank? && invalid?(opts) puts 'Missing required parameters' help end if opts[:auth_token].blank? puts 'Missing Authentication Token --auth_token' exit end update = opts[:importer_id].present? url = build_url(opts.delete(:importer_id), opts.delete(:url)) headers = { 'Content-Type' => 'application/json' } headers['Authorization'] = "Token: #{opts.delete(:auth_token)}" params = build_params(opts) logger.info("POST to #{url} - PARAMS #{params}") conn = Faraday.new( url: url, headers: headers ) response = if update conn.put do |request| request.body = params.to_json end else conn.post do |request| request.body = params.to_json end end puts "#{response.status} - #{response.body.truncate(200)}" end
required_params()
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 53 def required_params Bulkrax.api_definition['bulkrax']['importer'].map { |key, value| key if value['required'] == true }.compact end
version()
click to toggle source
# File lib/generators/bulkrax/templates/bin/importer, line 93 def version puts "Bulkrax #{Bulkrax::VERSION}" puts "Slop #{Slop::VERSION}" end