Module: Deb::S3::Utils
Defined Under Namespace
Classes: AlreadyExistsError, SafeSystemError
Class Method Summary
collapse
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
35
36
37
38
39
|
# File 'lib/deb/s3/utils.rb', line 35
def debianize_op(op)
{:< => "<<", :> => ">>"}[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; @gpg_options end
|
.gpg_options=(v) ⇒ Object
18
|
# File 'lib/deb/s3/utils.rb', line 18
def gpg_options= 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
52
53
54
55
56
|
# File 'lib/deb/s3/utils.rb', line 52
def s3_escape(string)
string.gsub(/([^a-zA-Z0-9_.\-~+]+)/) {
"%" + $1.unpack("H2" * $1.bytesize).join("%").upcase
}
end
|
.s3_exists?(path) ⇒ Boolean
58
59
60
61
62
63
64
65
|
# File 'lib/deb/s3/utils.rb', line 58
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) ⇒ Object
47
48
49
|
# File 'lib/deb/s3/utils.rb', line 47
def s3_path(path)
File.join(*[Deb::S3::Utils.prefix, path].compact)
end
|
.s3_read(path) ⇒ Object
67
68
69
70
71
72
73
74
|
# File 'lib/deb/s3/utils.rb', line 67
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) ⇒ Object
109
110
111
112
113
114
115
116
|
# File 'lib/deb/s3/utils.rb', line 109
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) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/deb/s3/utils.rb', line 76
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)
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
options[:server_side_encryption] = "AES256" if Deb::S3::Utils.encryption
File.open(path) do |f|
options[:body] = f
Deb::S3::Utils.s3.put_object(options)
end
end
|
.safesystem(*args) ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/deb/s3/utils.rb', line 27
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
41
42
43
44
45
|
# File 'lib/deb/s3/utils.rb', line 41
def template(path)
template_file = File.join(File.dirname(__FILE__), "templates", path)
template_code = File.read(template_file)
ERB.new(template_code, nil, "-")
end
|