external_repository.rb revision b2c3e5b702305642dd794d6e96c1f808c57e9012
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase def create_ontology(internal_iri, name: internal_iri)
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase iri: determine_iri(internal_iri),
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase basepath: determine_path(internal_iri, :basepath),
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase file_extension: determine_path(internal_iri, :extension),
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase repository_id: repository.id,
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase present: true,
b2c3e5b702305642dd794d6e96c1f808c57e9012Tim Reddehase SingleOntology.create!(options, without_protection: true)
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase def repository
c997297b21c83680cdba2953cad369b82a5b8805Tim Reddehase Repository.where(name: Settings.external_repository_name).first_or_create
6a6473fe00d1a9b89d9d8c076ea2c85fd2b22852Tim Reddehase def add_to_repository(iri, message, user, location: iri)
6a6473fe00d1a9b89d9d8c076ea2c85fd2b22852Tim Reddehase tmp_path = download_iri(location)
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)
271a564541ee27980bee1175313017137f14f943Tim Reddehase elsif URI::regexp(['file']).match(iri)
271a564541ee27980bee1175313017137f14f943Tim Reddehase iri.sub('file:///', '')
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))
68cbf8e3eb2a29f7220603d4dcb7bc97d6304bbcTim Reddehase fetch_uri_content(external_iri, write_file: filepath)
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase def ensure_path_existence(directory)
679529f5e0ca156ababdcdf2b9862c372332a6e3Tim Reddehase directory.mkpath