mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
eb1468c4ff
Currently, code is duplicated between ninefold and atmos. We should remove the code duplication and extend the atmos module in Ninefold.
56 lines
1.5 KiB
Ruby
56 lines
1.5 KiB
Ruby
require 'fog/ninefold'
|
|
require 'fog/storage'
|
|
require 'fog/atmos'
|
|
|
|
module Fog
|
|
module Storage
|
|
class Ninefold < Fog::Storage::Atmos
|
|
STORAGE_HOST = "onlinestorage.ninefold.com" #"api.ninefold.com"
|
|
STORAGE_PATH = "" #"/storage/v1.0"
|
|
STORAGE_PORT = "80" # "443"
|
|
STORAGE_SCHEME = "http" # "https"
|
|
|
|
requires :ninefold_storage_token, :ninefold_storage_secret
|
|
recognizes :persistent
|
|
|
|
model_path 'fog/atmos/models/storage'
|
|
model :directory
|
|
collection :directories
|
|
model :file
|
|
collection :files
|
|
|
|
module Utils
|
|
end
|
|
|
|
class Mock < Fog::Storage::Atmos::Mock
|
|
include Utils
|
|
|
|
def initialize(options={})
|
|
require 'mime/types'
|
|
@ninefold_storage_token = options[:ninefold_storage_token]
|
|
@ninefold_storage_secret = options[:ninefold_storage_secret]
|
|
end
|
|
|
|
def request(options)
|
|
raise "Ninefold Storage mocks not implemented"
|
|
end
|
|
|
|
end
|
|
|
|
class Real < Fog::Storage::Atmos::Real
|
|
include Utils
|
|
|
|
def initialize(options={})
|
|
endpoint = "#{STORAGE_SCHEME}://"\
|
|
"#{STORAGE_HOST}:"\
|
|
"#{STORAGE_PORT}"\
|
|
"#{STORAGE_PATH}"
|
|
options[:atmos_storage_endpoint] = endpoint
|
|
options[:atmos_storage_token] = options[:ninefold_storage_token]
|
|
options[:atmos_storage_secret] = options[:ninefold_storage_secret]
|
|
super(options)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|