class Morpheus::StorageProvidersInterface
Public Instance Methods
create(payload)
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 20 def create(payload) url = "#{@base_url}/api/storage/buckets" headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' } opts = {method: :post, url: url, headers: headers, payload: payload.to_json} execute(opts) end
destroy(id, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 34 def destroy(id, params={}) url = "#{@base_url}/api/storage/buckets/#{id}" headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' } opts = {method: :delete, url: url, headers: headers} execute(opts) end
download_file(id, file_path, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 81 def download_file(id, file_path, params={}) raise "#{self.class}.download_file() passed a blank id!" if id.to_s == '' raise "#{self.class}.download_file() passed a blank file path!" if file_path.to_s == '' escaped_file_path = file_path.split("/").collect {|it| CGI::escape(it) }.join("/") url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}" + "/download-file/#{escaped_file_path}".squeeze('/') headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} execute(opts, false) end
download_file_chunked(id, file_path, outfile, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 91 def download_file_chunked(id, file_path, outfile, params={}) raise "#{self.class}.download_file() passed a blank id!" if id.to_s == '' raise "#{self.class}.download_file() passed a blank file path!" if file_path.to_s == '' escaped_file_path = file_path.split("/").collect {|it| CGI::escape(it) }.join("/") url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}" + "/download-file/#{escaped_file_path}".squeeze('/') headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} # execute(opts, false) if Dir.exist?(outfile) raise "outfile is invalid. It is the name of an existing directory: #{outfile}" end # if @verify_ssl == false # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE # end if @dry_run return opts end http_response = nil File.open(outfile, 'w') {|f| block = proc { |response| response.read_body do |chunk| # writing to #{outfile} ..." f.write chunk end } opts[:block_response] = block http_response = Morpheus::RestClient.execute(opts) } return http_response end
download_zip_chunked(id, outfile, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 122 def download_zip_chunked(id, outfile, params={}) #url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}" + ".zip" url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}/download-zip" headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} # execute(opts, false) if Dir.exist?(outfile) raise "outfile is invalid. It is the name of an existing directory: #{outfile}" end # if @verify_ssl == false # opts[:verify_ssl] = OpenSSL::SSL::VERIFY_NONE # end if @dry_run return opts end http_response = nil File.open(outfile, 'w') {|f| block = proc { |response| response.read_body do |chunk| # writing to #{outfile} ..." f.write chunk end } opts[:block_response] = block http_response = Morpheus::RestClient.execute(opts) } return http_response end
get(id, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 5 def get(id, params={}) raise "#{self.class}.get() passed a blank id!" if id.to_s == '' url = "#{@base_url}/api/storage/buckets/#{id}" headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} execute(opts) end
list(params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 13 def list(params={}) url = "#{@base_url}/api/storage/buckets" headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} execute(opts) end
list_files(id, file_path, params={})
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 41 def list_files(id, file_path, params={}) if file_path.to_s.strip == "/" file_path = "" end url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}" + "/files/#{escape_filepath(file_path)}".squeeze('/') headers = { params: params, authorization: "Bearer #{@access_token}" } opts = {method: :get, url: url, headers: headers} execute(opts) end
update(id, payload)
click to toggle source
# File lib/morpheus/api/storage_providers_interface.rb, line 27 def update(id, payload) url = "#{@base_url}/api/storage/buckets/#{id}" headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' } opts = {method: :put, url: url, headers: headers, payload: payload.to_json} execute(opts) end
upload_file(id, local_file, destination, params={})
click to toggle source
upload a file without multipart
# File lib/morpheus/api/storage_providers_interface.rb, line 52 def upload_file(id, local_file, destination, params={}) # puts "upload_file #{local_file} to destination #{destination}" # destination should be the full filePath, but the api looks like directory?filename= path = destination.to_s.squeeze("/") if !path || path == "" || path == "/" || path == "." raise "#{self.class}.upload_file() passed a bad destination: '#{destination}'" end if path[0].chr == "/" path = path[1..-1] end path_chunks = path.split("/") filename = path_chunks.pop safe_dirname = path_chunks.collect {|it| CGI::escape(it) }.join("/") # filename = File.basename(destination) # dirname = File.dirname(destination) # if filename == "" || filename == "/" # filename = File.basename(local_file) # end url = "#{@base_url}/api/storage/buckets/#{CGI::escape(id.to_s)}" + "/files/#{safe_dirname}".squeeze('/') headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/octet-stream'} headers[:params][:filename] = filename # File.basename(destination) if !local_file.kind_of?(File) local_file = File.new(local_file, 'rb') end payload = local_file headers['Content-Length'] = local_file.size # File.size(local_file) execute(method: :post, url: url, headers: headers, payload: payload) end