module Deb::S3::Utils
Public Instance Methods
access_policy()
click to toggle source
# File lib/deb/s3/utils.rb, line 12 def access_policy; @access_policy end
access_policy=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 13 def access_policy= v; @access_policy = v end
bucket()
click to toggle source
# File lib/deb/s3/utils.rb, line 10 def bucket; @bucket end
bucket=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 11 def bucket= v; @bucket = v end
debianize_op(op)
click to toggle source
# File lib/deb/s3/utils.rb, line 34 def debianize_op(op) # Operators in debian packaging are <<, <=, =, >= and >> # So any operator like < or > must be replaced {:< => "<<", :> => ">>"}[op.to_sym] or op end
encryption()
click to toggle source
# File lib/deb/s3/utils.rb, line 20 def encryption; @encryption end
encryption=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 21 def encryption= v; @encryption = v end
gpg_options()
click to toggle source
# File lib/deb/s3/utils.rb, line 16 def gpg_options; @gpg_options end
gpg_options=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 17 def gpg_options= v; @gpg_options = v end
prefix()
click to toggle source
# File lib/deb/s3/utils.rb, line 18 def prefix; @prefix end
prefix=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 19 def prefix= v; @prefix = v end
s3()
click to toggle source
# File lib/deb/s3/utils.rb, line 8 def s3; @s3 end
s3=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 9 def s3= v; @s3 = v end
s3_escape(string)
click to toggle source
from fog, Fog::AWS.escape
# File lib/deb/s3/utils.rb, line 51 def s3_escape(string) string.gsub(/([^a-zA-Z0-9_.\-~+]+)/) { "%" + $1.unpack("H2" * $1.bytesize).join("%").upcase } end
s3_exists?(path)
click to toggle source
# File lib/deb/s3/utils.rb, line 57 def s3_exists?(path) Deb::S3::Utils.s3.head_object( :bucket => Deb::S3::Utils.bucket, :key => s3_path(path), ) rescue Aws::S3::Errors::NotFound false end
s3_path(path)
click to toggle source
# File lib/deb/s3/utils.rb, line 46 def s3_path(path) File.join(*[Deb::S3::Utils.prefix, path].compact) end
s3_read(path)
click to toggle source
# File lib/deb/s3/utils.rb, line 66 def s3_read(path) Deb::S3::Utils.s3.get_object( :bucket => Deb::S3::Utils.bucket, :key => s3_path(path), )[:body].read rescue Aws::S3::Errors::NoSuchKey false end
s3_remove(path)
click to toggle source
# File lib/deb/s3/utils.rb, line 108 def s3_remove(path) if s3_exists?(path) Deb::S3::Utils.s3.delete_object( :bucket =>Deb::S3::Utils.bucket, :key => s3_path(path), ) end end
s3_store(path, filename=nil, content_type='application/octet-stream; charset=binary', cache_control=nil, fail_if_exists=false)
click to toggle source
# File lib/deb/s3/utils.rb, line 75 def s3_store(path, filename=nil, content_type='application/octet-stream; charset=binary', cache_control=nil, fail_if_exists=false) filename = File.basename(path) unless filename obj = s3_exists?(filename) file_md5 = Digest::MD5.file(path) # check if the object already exists if obj != false return if (file_md5.to_s == obj[:etag].gsub('"', '') or file_md5.to_s == obj[:metadata]['md5']) raise AlreadyExistsError, "file #{filename} already exists with different contents" if fail_if_exists end options = { :bucket => Deb::S3::Utils.bucket, :key => s3_path(filename), :acl => Deb::S3::Utils.access_policy, :content_type => content_type, :metadata => { "md5" => file_md5.to_s }, } if !cache_control.nil? options[:cache_control] = cache_control end # specify if encryption is required options[:server_side_encryption] = "AES256" if Deb::S3::Utils.encryption # upload the file File.open(path) do |f| options[:body] = f Deb::S3::Utils.s3.put_object(options) end end
safesystem(*args)
click to toggle source
# File lib/deb/s3/utils.rb, line 26 def safesystem(*args) success = system(*args) if !success raise SafeSystemError, "'system(#{args.inspect})' failed with error code: #{$?.exitstatus}" end return success end
signing_key()
click to toggle source
# File lib/deb/s3/utils.rb, line 14 def signing_key; @signing_key end
signing_key=(v;)
click to toggle source
# File lib/deb/s3/utils.rb, line 15 def signing_key= v; @signing_key = v end
template(path)
click to toggle source
# File lib/deb/s3/utils.rb, line 40 def template(path) template_file = File.join(File.dirname(__FILE__), "templates", path) template_code = File.read(template_file) ERB.new(template_code, nil, "-") end