Sha256: eed57d0f508094eb11508bfb5a465d635878a2e8ad27b146e31b88fe86cc59d5

Contents?: true

Size: 1.71 KB

Versions: 8

Compression:

Stored size: 1.71 KB

Contents

require_relative 'downloader'
require 'rdf/rdfxml'
module Sufia
  module ControlledVocabulary
    module Importer
      class Language
        URL = 'http://www.lexvo.org/resources/lexvo_2013-02-09.rdf.gz'.freeze

        def initialize
          stdout_logger = Logger.new(STDOUT)
          stdout_logger.level = Logger::INFO
          stdout_logger.formatter = proc do |_severity, _datetime, _progname, msg|
            "#{msg}\n"
          end
          Rails.logger.extend(ActiveSupport::Logger.broadcast(stdout_logger))
        end

        def import
          download
          extract
          logger.info "Importing #{rdf_path}"
          Qa::Services::RDFAuthorityParser.import_rdf(
            'languages',
            [rdf_path],
            format: 'rdfxml',
            predicate: RDF::Vocab::SKOS.prefLabel
          )
          logger.info "Import complete"
        end

        delegate :logger, to: Rails

        def rdf_path
          @rdf_path ||= download_path.sub(/\.gz$/, '')
        end

        def extract
          return if File.exist?(rdf_path)
          logger.info "Extracting #{download_path}"
          system("gunzip #{download_path}")
          raise "Unable to extract #{download_path}" unless $CHILD_STATUS.success?
        end

        def download
          return if File.exist?(rdf_path) || File.exist?(download_path)
          logger.info "Downloading #{URL}"
          Downloader.fetch(URL, download_path)
        end

        def download_path
          File.join(download_dir, File.basename(URL))
        end

        def download_dir
          @download_dir ||= File.join(Rails.root, 'tmp')
          FileUtils.mkdir_p @download_dir
          @download_dir
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
sufia-7.4.1 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.4.0 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.3.1 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.3.0 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.3.0.rc3 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.3.0.rc2 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.3.0.rc1 lib/sufia/controlled_vocabulary/importer/language.rb
sufia-7.2.0 lib/sufia/controlled_vocabulary/importer/language.rb