mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
|
require 'fog/core/model'
|
||
|
|
||
|
module Fog
|
||
|
module Storage
|
||
|
class Atmos
|
||
|
|
||
|
class Directory < Fog::Model
|
||
|
|
||
|
identity :key, :aliases => :Filename
|
||
|
attribute :objectid, :aliases => :ObjectID
|
||
|
|
||
|
def files
|
||
|
@files ||= begin
|
||
|
Fog::Storage::Atmos::Files.new(
|
||
|
:directory => self,
|
||
|
:connection => connection
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def directories
|
||
|
@directories ||= begin
|
||
|
Fog::Storage::Atmos::Directories.new(
|
||
|
:directory => self,
|
||
|
:connection => connection
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def save
|
||
|
self.key = attributes[:directory].key + key if attributes[:directory]
|
||
|
self.key = key + '/' unless key =~ /\/$/
|
||
|
res = connection.post_namespace key
|
||
|
reload
|
||
|
end
|
||
|
|
||
|
def destroy(opts={})
|
||
|
if opts[:recursive]
|
||
|
files.each {|f| f.destroy }
|
||
|
directories.each do |d|
|
||
|
d.files.each {|f| f.destroy }
|
||
|
d.destroy(opts)
|
||
|
end
|
||
|
end
|
||
|
connection.delete_namespace key
|
||
|
end
|
||
|
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|