Class: Fog::Storage::HP::Directory
- Inherits:
-
Model
- Object
- Model
- Fog::Storage::HP::Directory
show all
- Defined in:
- lib/fog/hp/models/storage/directory.rb
Instance Attribute Summary
Attributes inherited from Model
#collection, #service
Instance Method Summary
collapse
Methods inherited from Model
#inspect, #reload, #symbolize_keys, #to_json, #wait_for
#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes
#connection, #connection=, #prepare_service_value
#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #persisted?, #requires, #requires_one
Constructor Details
#initialize(attributes = {}) ⇒ Directory
Returns a new instance of Directory.
15
16
17
18
19
|
# File 'lib/fog/hp/models/storage/directory.rb', line 15
def initialize(attributes = {})
@read_acl = []
@write_acl = []
super
end
|
Instance Method Details
#can_read?(user) ⇒ Boolean
29
30
31
32
|
# File 'lib/fog/hp/models/storage/directory.rb', line 29
def can_read?(user)
return false if @read_acl.nil?
list_users_with_read.include?(user)
end
|
#can_read_write?(user) ⇒ Boolean
39
40
41
|
# File 'lib/fog/hp/models/storage/directory.rb', line 39
def can_read_write?(user)
can_read?(user) && can_write?(user)
end
|
#can_write?(user) ⇒ Boolean
34
35
36
37
|
# File 'lib/fog/hp/models/storage/directory.rb', line 34
def can_write?(user)
return false if @write_acl.nil?
list_users_with_write.include?(user)
end
|
#cdn_enable=(new_cdn_enable) ⇒ Object
152
153
154
155
156
157
158
159
160
|
# File 'lib/fog/hp/models/storage/directory.rb', line 152
def cdn_enable=(new_cdn_enable)
@cdn_enable ||= false
if (!service.cdn.nil? && service.cdn.enabled?)
@cdn_enable = new_cdn_enable
else
@cdn_enable = false
end
end
|
#cdn_enabled? ⇒ Boolean
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
# File 'lib/fog/hp/models/storage/directory.rb', line 162
def cdn_enabled?
if (!service.cdn.nil? && service.cdn.enabled?)
begin response = service.cdn.head_container(key)
= response..fetch('X-Cdn-Enabled', nil)
if (!.nil? && == 'True')
@cdn_enable = true
else
@cdn_enable = false
end
rescue Fog::CDN::HP::NotFound, Excon::Errors::SocketError
@cdn_enable = false
end
else
@cdn_enable = false
end
end
|
#cdn_public_ssl_url ⇒ Object
194
195
196
197
198
199
200
201
202
203
204
205
206
|
# File 'lib/fog/hp/models/storage/directory.rb', line 194
def cdn_public_ssl_url
requires :key
@cdn_public_ssl_url ||= begin
begin response = service.cdn.head_container(key)
if response.['X-Cdn-Enabled'] == 'True'
response..fetch('X-Cdn-Ssl-Uri', nil)
end
rescue Fog::CDN::HP::NotFound
nil
end
end
end
|
#cdn_public_url ⇒ Object
180
181
182
183
184
185
186
187
188
189
190
191
192
|
# File 'lib/fog/hp/models/storage/directory.rb', line 180
def cdn_public_url
requires :key
@cdn_public_url ||= begin
begin response = service.cdn.head_container(key)
if response.['X-Cdn-Enabled'] == 'True'
response..fetch('X-Cdn-Uri', nil)
end
rescue Fog::CDN::HP::NotFound
nil
end
end
end
|
#destroy ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/fog/hp/models/storage/directory.rb', line 97
def destroy
requires :key
service.delete_container(key)
if cdn_enabled?
begin
service.cdn.delete_container(key)
rescue Fog::CDN::HP::NotFound
end
end
true
rescue Excon::Errors::NotFound, Fog::Storage::HP::NotFound
false
end
|
#files ⇒ Object
113
114
115
116
117
118
119
120
|
# File 'lib/fog/hp/models/storage/directory.rb', line 113
def files
@files ||= begin
Fog::Storage::HP::Files.new(
:directory => self,
:service => service
)
end
end
|
#grant(perm, users = nil) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/fog/hp/models/storage/directory.rb', line 55
def grant(perm, users=nil)
if users.is_a?(String)
user_list = users.split(',')
else
user_list = users
end
r_acl, w_acl = service.perm_to_acl(perm, user_list)
unless r_acl.nil? || r_acl.empty?
@read_acl = [] if @read_acl.nil?
@read_acl = @read_acl + r_acl
@read_acl.uniq!
end
unless w_acl.nil? || w_acl.empty?
@write_acl = [] if @write_acl.nil?
@write_acl = @write_acl + w_acl
@write_acl.uniq!
end
true
end
|
#list_users_with_read ⇒ Object
43
44
45
46
47
|
# File 'lib/fog/hp/models/storage/directory.rb', line 43
def list_users_with_read
users = []
users = @read_acl.map {|acl| acl.split(':')[1]} unless @read_acl.nil?
return users
end
|
#list_users_with_write ⇒ Object
49
50
51
52
53
|
# File 'lib/fog/hp/models/storage/directory.rb', line 49
def list_users_with_write
users = []
users = @write_acl.map {|acl| acl.split(':')[1]} unless @write_acl.nil?
return users
end
|
#public=(new_public) ⇒ Object
122
123
124
125
126
127
128
129
|
# File 'lib/fog/hp/models/storage/directory.rb', line 122
def public=(new_public)
if new_public
self.grant("pr")
else
self.revoke("pr")
end
@public = new_public
end
|
#public? ⇒ Boolean
131
132
133
134
135
136
137
138
|
# File 'lib/fog/hp/models/storage/directory.rb', line 131
def public?
@read_acl = [] if @read_acl.nil?
if @read_acl.include?(".r:*")
true
else
false
end
end
|
#public_url ⇒ Object
140
141
142
143
144
145
146
147
148
149
150
|
# File 'lib/fog/hp/models/storage/directory.rb', line 140
def public_url
requires :key
@public_url ||= begin
begin response = service.head_container(key)
url = service.public_url(key)
rescue Fog::Storage::HP::NotFound => err
nil
end
end
end
|
#read_acl ⇒ Object
21
22
23
|
# File 'lib/fog/hp/models/storage/directory.rb', line 21
def read_acl
@read_acl || []
end
|
#revoke(perm, users = nil) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/fog/hp/models/storage/directory.rb', line 76
def revoke(perm, users=nil)
if users.is_a?(String)
user_list = users.split(',')
else
user_list = users
end
r_acl, w_acl = service.perm_to_acl(perm, user_list)
unless r_acl.nil? || r_acl.empty?
@read_acl = [] if @read_acl.nil?
@read_acl = @read_acl - r_acl
@read_acl.uniq!
end
unless w_acl.nil? || w_acl.empty?
@write_acl = [] if @write_acl.nil?
@write_acl = @write_acl - w_acl
@write_acl.uniq!
end
true
end
|
#save(options = {}) ⇒ Object
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
|
# File 'lib/fog/hp/models/storage/directory.rb', line 208
def save(options = {})
requires :key
options.merge!(service.(@read_acl, @write_acl))
service.put_container(key, options)
if (!service.cdn.nil? && service.cdn.enabled?)
if @cdn_enable
begin response = service.cdn.head_container(key)
service.cdn.post_container(key, {'X-CDN-Enabled' => 'True'})
rescue Fog::CDN::HP::NotFound
service.cdn.put_container(key)
rescue Excon::Errors::SocketError
end
else
begin response = service.cdn.head_container(key)
service.cdn.post_container(key, {'X-CDN-Enabled' => 'False'})
rescue Fog::CDN::HP::NotFound
rescue Excon::Errors::SocketError
end
end
end
true
end
|
#write_acl ⇒ Object
25
26
27
|
# File 'lib/fog/hp/models/storage/directory.rb', line 25
def write_acl
@write_acl || []
end
|