class RabbitSwift::LargeObject::Slo_client
Attributes
dest_path[RW]
original_dest_path[RW]
original_file_md5sum[RW]
rabbit_swift_client[RW]
slo_option[RW]
src_path[RW]
Public Class Methods
new(rabbit_swift_client, src_path, dest_path, slo_option = {})
click to toggle source
# File lib/rabbit_swift/large_object/slo_client.rb, line 9 def initialize(rabbit_swift_client, src_path, dest_path, slo_option = {}) @rabbit_swift_client = rabbit_swift_client @src_path = src_path @dest_path = dest_path #TODO かなり無理があるので改修必要 @original_dest_path = dest_path.sub(/https:\/\/.*\/v1\/.*\//, '/') @slo_option = slo_option end
Public Instance Methods
upload()
click to toggle source
# File lib/rabbit_swift/large_object/slo_client.rb, line 20 def upload original_file_md5sum = Digest::MD5.file(src_path).to_s if @slo_option.has_key?('limit_file_size') slo = RabbitSwift::LargeObject::StaticLargeObject.new(src_path, dest_path, limit_file_size: @slo_option['limit_file_size']) else slo = RabbitSwift::LargeObject::StaticLargeObject.new(src_path, dest_path) end # (指定されたファイルサイズ単位で)ファイルを分割する rabbit_file_split = slo.split # JSONマニフェストファイルをつくる manifest_json = slo.create_manifest_list(rabbit_file_split.file_list) puts manifest_json token = rabbit_swift_client.get_token #TODO with etag #ファイルを全てアップロード rabbit_file_split.file_list.each do |file_path| status = rabbit_swift_client.upload(token, dest_path, file_path) puts file_path puts 'http_status -> ' + status.to_s if (status == RabbitSwift::Client::UPLOAD_SUCCESS_HTTP_STATUS_CODE) puts 'upload OK' else puts 'upload NG' return end end puts "dest_path->" + dest_path #マニフェストをアップロード rabbit_swift_client.upload_manifest(token, dest_path, @original_dest_path, @src_path, manifest_json, original_file_md5sum) #分割したファイルを削除 rabbit_file_split.delete_all end