mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
cc69d10c89
Refactor ninefold to provide generic Atmos support. Add an additional argument, when compared to ninefold, which is the endpoint. The endpoint should be a full URL, e.g. https://storage.provider.com:1337/atmos. The API path and port are optional. If the port is not specified, it is inferred from the protocol.
53 lines
1.5 KiB
Ruby
53 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
|