Module: Deb::S3::Utils
Defined Under Namespace
Classes: SafeSystemError
Class Method Summary collapse
- .access_policy ⇒ Object
- .access_policy=(v) ⇒ Object
- .bucket ⇒ Object
- .bucket=(v) ⇒ Object
- .debianize_op(op) ⇒ Object
- .encryption ⇒ Object
- .encryption=(v) ⇒ Object
- .gpg_options ⇒ Object
- .gpg_options=(v) ⇒ Object
- .prefix ⇒ Object
- .prefix=(v) ⇒ Object
- .s3 ⇒ Object
- .s3=(v) ⇒ Object
-
.s3_escape(string) ⇒ Object
from fog, Fog::AWS.escape.
- .s3_exists?(path) ⇒ Boolean
- .s3_path(path) ⇒ Object
- .s3_read(path) ⇒ Object
- .s3_remove(path) ⇒ Object
- .s3_store(path, filename = nil, content_type = 'application/octet-stream; charset=binary', cache_control = nil) ⇒ Object
- .safesystem(*args) ⇒ Object
- .signing_key ⇒ Object
- .signing_key=(v) ⇒ Object
- .template(path) ⇒ Object
Class Method Details
.access_policy ⇒ Object
13 |
# File 'lib/deb/s3/utils.rb', line 13 def access_policy; @access_policy end |
.access_policy=(v) ⇒ Object
14 |
# File 'lib/deb/s3/utils.rb', line 14 def access_policy= v; @access_policy = v end |
.bucket ⇒ Object
11 |
# File 'lib/deb/s3/utils.rb', line 11 def bucket; @bucket end |
.bucket=(v) ⇒ Object
12 |
# File 'lib/deb/s3/utils.rb', line 12 def bucket= v; @bucket = v end |
.debianize_op(op) ⇒ Object
34 35 36 37 38 |
# 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 ⇒ Object
21 |
# File 'lib/deb/s3/utils.rb', line 21 def encryption; @encryption end |
.encryption=(v) ⇒ Object
22 |
# File 'lib/deb/s3/utils.rb', line 22 def encryption= v; @encryption = v end |
.gpg_options ⇒ Object
17 |
# File 'lib/deb/s3/utils.rb', line 17 def ; @gpg_options end |
.gpg_options=(v) ⇒ Object
18 |
# File 'lib/deb/s3/utils.rb', line 18 def v; @gpg_options = v end |
.prefix ⇒ Object
19 |
# File 'lib/deb/s3/utils.rb', line 19 def prefix; @prefix end |
.prefix=(v) ⇒ Object
20 |
# File 'lib/deb/s3/utils.rb', line 20 def prefix= v; @prefix = v end |
.s3 ⇒ Object
9 |
# File 'lib/deb/s3/utils.rb', line 9 def s3; @s3 end |
.s3=(v) ⇒ Object
10 |
# File 'lib/deb/s3/utils.rb', line 10 def s3= v; @s3 = v end |
.s3_escape(string) ⇒ Object
from fog, Fog::AWS.escape
51 52 53 54 55 |
# 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) ⇒ Boolean
57 58 59 |
# File 'lib/deb/s3/utils.rb', line 57 def s3_exists?(path) Deb::S3::Utils.s3.buckets[Deb::S3::Utils.bucket].objects[s3_path(path)].exists? end |
.s3_path(path) ⇒ Object
46 47 48 |
# File 'lib/deb/s3/utils.rb', line 46 def s3_path(path) File.join(*[Deb::S3::Utils.prefix, path].compact) end |
.s3_read(path) ⇒ Object
61 62 63 64 |
# File 'lib/deb/s3/utils.rb', line 61 def s3_read(path) return nil unless s3_exists?(path) Deb::S3::Utils.s3.buckets[Deb::S3::Utils.bucket].objects[s3_path(path)].read end |
.s3_remove(path) ⇒ Object
89 90 91 |
# File 'lib/deb/s3/utils.rb', line 89 def s3_remove(path) Deb::S3::Utils.s3.buckets[Deb::S3::Utils.bucket].objects[s3_path(path)].delete if s3_exists?(path) end |
.s3_store(path, filename = nil, content_type = 'application/octet-stream; charset=binary', cache_control = nil) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/deb/s3/utils.rb', line 66 def s3_store(path, filename=nil, content_type='application/octet-stream; charset=binary', cache_control=nil) filename = File.basename(path) unless filename obj = Deb::S3::Utils.s3.buckets[Deb::S3::Utils.bucket].objects[s3_path(filename)] file_md5 = Digest::MD5.file(path) # check if the object already exists if obj.exists? return if (file_md5.to_s == obj.etag.gsub('"', '') or file_md5.to_s == obj.['md5']) end = {:acl => Deb::S3::Utils.access_policy, :content_type => content_type, :metadata => {'md5' => file_md5}} if !cache_control.nil? [:cache_control] = cache_control end # specify if encryption is required [:server_side_encryption] = :aes256 if Deb::S3::Utils.encryption # upload the file obj.write(Pathname.new(path), ) end |
.safesystem(*args) ⇒ Object
26 27 28 29 30 31 32 |
# 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 ⇒ Object
15 |
# File 'lib/deb/s3/utils.rb', line 15 def signing_key; @signing_key end |
.signing_key=(v) ⇒ Object
16 |
# File 'lib/deb/s3/utils.rb', line 16 def signing_key= v; @signing_key = v end |
.template(path) ⇒ Object
40 41 42 43 44 |
# 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 |