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
- .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') ⇒ Object
- .safesystem(*args) ⇒ Object
- .signing_key ⇒ Object
- .signing_key=(v) ⇒ Object
- .template(path) ⇒ Object
Class Method Details
.access_policy ⇒ Object
12 |
# File 'lib/deb/s3/utils.rb', line 12 def access_policy; @access_policy end |
.access_policy=(v) ⇒ Object
13 |
# File 'lib/deb/s3/utils.rb', line 13 def access_policy= v; @access_policy = v end |
.bucket ⇒ Object
10 |
# File 'lib/deb/s3/utils.rb', line 10 def bucket; @bucket end |
.bucket=(v) ⇒ Object
11 |
# File 'lib/deb/s3/utils.rb', line 11 def bucket= v; @bucket = v end |
.debianize_op(op) ⇒ Object
31 32 33 34 35 |
# File 'lib/deb/s3/utils.rb', line 31 def debianize_op(op) # Operators in debian packaging are <<, <=, =, >= and >> # So any operator like < or > must be replaced {:< => "<<", :> => ">>"}[op.to_sym] or op end |
.gpg_options ⇒ Object
16 |
# File 'lib/deb/s3/utils.rb', line 16 def ; @gpg_options end |
.gpg_options=(v) ⇒ Object
17 |
# File 'lib/deb/s3/utils.rb', line 17 def v; @gpg_options = v end |
.prefix ⇒ Object
18 |
# File 'lib/deb/s3/utils.rb', line 18 def prefix; @prefix end |
.prefix=(v) ⇒ Object
19 |
# File 'lib/deb/s3/utils.rb', line 19 def prefix= v; @prefix = v end |
.s3 ⇒ Object
8 |
# File 'lib/deb/s3/utils.rb', line 8 def s3; @s3 end |
.s3=(v) ⇒ Object
9 |
# File 'lib/deb/s3/utils.rb', line 9 def s3= v; @s3 = v end |
.s3_escape(string) ⇒ Object
from fog, Fog::AWS.escape
48 49 50 51 52 |
# File 'lib/deb/s3/utils.rb', line 48 def s3_escape(string) string.gsub(/([^a-zA-Z0-9_.\-~]+)/) { "%" + $1.unpack("H2" * $1.bytesize).join("%").upcase } end |
.s3_exists?(path) ⇒ Boolean
54 55 56 |
# File 'lib/deb/s3/utils.rb', line 54 def s3_exists?(path) Deb::S3::Utils.s3.buckets[Deb::S3::Utils.bucket].objects[s3_path(path)].exists? end |
.s3_path(path) ⇒ Object
43 44 45 |
# File 'lib/deb/s3/utils.rb', line 43 def s3_path(path) File.join(*[Deb::S3::Utils.prefix, path].compact) end |
.s3_read(path) ⇒ Object
58 59 60 61 |
# File 'lib/deb/s3/utils.rb', line 58 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
78 79 80 |
# File 'lib/deb/s3/utils.rb', line 78 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') ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/deb/s3/utils.rb', line 63 def s3_store(path, filename=nil, content_type='application/octet-stream; charset=binary') 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 # upload the file obj.write(Pathname.new(path), :acl => Deb::S3::Utils.access_policy, :content_type => content_type, :metadata => {'md5' => file_md5}) end |
.safesystem(*args) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/deb/s3/utils.rb', line 23 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
14 |
# File 'lib/deb/s3/utils.rb', line 14 def signing_key; @signing_key end |
.signing_key=(v) ⇒ Object
15 |
# File 'lib/deb/s3/utils.rb', line 15 def signing_key= v; @signing_key = v end |
.template(path) ⇒ Object
37 38 39 40 41 |
# File 'lib/deb/s3/utils.rb', line 37 def template(path) template_file = File.join(File.dirname(__FILE__), "templates", path) template_code = File.read(template_file) ERB.new(template_code, nil, "-") end |