external_repository.rb revision 679529f5e0ca156ababdcdf2b9862c372332a6e3
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def repository
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase Repository.where(name: Settings.external_repository_name).first_or_create
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def add_to_repository(iri, message, user)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase tmp_path = download_iri(iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase repository.save_file_only(tmp_path, determine_path(iri, :fullpath),
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase message, user)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_iri(external_iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase "http://#{Settings.hostname}/#{repository.path}/#{determine_path(external_iri, :fullpath)}"
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_path(external_iri, symbol)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase when :fullpath then determine_filepath(external_iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase when :dirpath then determine_filepath(external_iri, false)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase when :basepath then determine_basepath(external_iri, false)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase when :basename then determine_basename(external_iri, false)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase when :extension then determine_extension(external_iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_filepath(external_iri, with_file=true)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase fullpath = iri_split(external_iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase with_file ? fullpath : fullpath.sub(determine_basename(external_iri), '')
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_basepath(external_iri, with_extension=true)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase basepath = iri_split(external_iri)
92e469804ba347d858ed52c3f6b40014d2aa514cTim Reddehase with_extension ? basepath : basepath.sub(determine_extension(external_iri), '')
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_basename(external_iri, with_extension=true)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase File.basename(determine_basepath(external_iri, with_extension))
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def determine_extension(external_iri)
92e469804ba347d858ed52c3f6b40014d2aa514cTim Reddehase File.extname(determine_basepath(external_iri))
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase # split iri into wget -r style
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def iri_split(iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase match = URI::regexp(['http','https']).match(iri)
58dbabd635383aca84b28f5df716d838b334a1bfTim Reddehase host = match[4]
58dbabd635383aca84b28f5df716d838b334a1bfTim Reddehase path = match[7]
58dbabd635383aca84b28f5df716d838b334a1bfTim Reddehase File.join(host, path)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def download_iri(external_iri)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase dir = Pathname.new('/tmp/reference_ontologies/').
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase join(determine_path(external_iri, :dirpath))
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase ensure_path_existence(dir)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase filepath = dir.join(determine_basename(external_iri))
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase fetch_uri_content(uri, write_file: filepath)
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase def ensure_path_existence(directory)
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase directory.mkpath