Class: Fclay::RemoteStorage::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/fclay/remote_storage/provider.rb

Class Method Summary collapse

Class Method Details

.delete_files(model) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/fclay/remote_storage/provider.rb', line 42

def self.delete_files(model)
  options = model.class.fclay_options

  if options[:primary].present?
    storage = provider_for(options[:primary], model)
    storage.delete_files

    if options[:secondary].present?
      storage = provider_for(options[:secondary], model)
      storage.delete_files
    end
  else
    storage = provider_for(storage_policy, model)
    storage.delete_files
  end
end

.get_provider_class(storage) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/fclay/remote_storage/provider.rb', line 6

def self.get_provider_class(storage)
  case storage[:kind]
  when 'ssh'
    Fclay::RemoteStorage::SSH
  when 's3'
    Fclay::RemoteStorage::S3
  else
    raise 'Unsupported storage type'
  end
end

.provider_for(storage_name, uploading_object) ⇒ Object



17
18
19
20
# File 'lib/fclay/remote_storage/provider.rb', line 17

def self.provider_for(storage_name, uploading_object)
  klass = get_provider_class(storages_list[storage_name])
  klass.new(storage_name, uploading_object)
end

.remote_file_url(obj, style = nil) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'lib/fclay/remote_storage/provider.rb', line 59

def self.remote_file_url(obj, style = nil)
  if obj.class.fclay_options[:primary].present?
    s = obj.class.fclay_options[:primary]
    klass = get_provider_class(storages_list[s])
    "#{klass.url(s)}/#{obj.remote_file_path(style)}"
  else
    klass = get_provider_class(storages_list[storage_policy])
    "#{klass.url(storage_policy)}/#{obj.remote_file_path(style)}"
  end
end

.storage_policyObject



74
75
76
# File 'lib/fclay/remote_storage/provider.rb', line 74

def self.storage_policy
  Fclay.configuration.storage_policy
end

.storages_listObject



70
71
72
# File 'lib/fclay/remote_storage/provider.rb', line 70

def self.storages_list
  Fclay.configuration.remote_storages
end

.upload(uploading_object) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/fclay/remote_storage/provider.rb', line 23

def self.upload(uploading_object)
  options = uploading_object.class.fclay_options

  if options[:primary].present?
    storage = provider_for(options[:primary], uploading_object)
    storage.upload

    if options[:secondary].present?
      storage = provider_for(options[:secondary], uploading_object)
      storage.upload(without_update: true)
    end
  else
    storage = provider_for(storage_policy, uploading_object)
    storage.upload
  end

  uploading_object.delete_local_files
end