Class: SyncFog::SyncFogUpload

Inherits:
Object
  • Object
show all
Defined in:
lib/sync_fog/sync_fog_upload.rb

Instance Method Summary collapse

Constructor Details

#initialize(container, config) ⇒ SyncFogUpload

Returns a new instance of SyncFogUpload.



12
13
14
15
16
17
18
19
# File 'lib/sync_fog/sync_fog_upload.rb', line 12

def initialize(container,config)

  @fog_service  = Fog::Storage.new(config)
  @container    = @fog_service.directories.get(container)
  @skip         = SyncFog.configuration.skip_existing      
  @num_threads  = SyncFog.configuration.num_threads
  @meta         = SyncFog.configuration.fog_attributes
end

Instance Method Details

#clean_remote(keep_files) ⇒ Object

Removing files



43
44
45
46
47
48
49
# File 'lib/sync_fog/sync_fog_upload.rb', line 43

def clean_remote(keep_files)
  keep_files_string = keep_files.map{|f| f.to_s}      

  Parallel.map(@container.files,in_threads: @num_threads) do |file|
    remove_file(file,keep_files_string)
  end
end

#public_urlObject

infos



59
60
61
# File 'lib/sync_fog/sync_fog_upload.rb', line 59

def public_url
  @container.public_url
end

#remove_file(file, keep_files_string) ⇒ Object



51
52
53
54
55
56
# File 'lib/sync_fog/sync_fog_upload.rb', line 51

def remove_file(file,keep_files_string)
  unless keep_files_string.include?(file.key)        
    p "SyncFog: -> removing #{file.key}"
    file.destroy 
  end
end

#upload(files, dir) ⇒ Object

uploading files



22
23
24
25
26
27
# File 'lib/sync_fog/sync_fog_upload.rb', line 22

def upload(files,dir)

  Parallel.map(files,in_threads: @num_threads) do |source_file|
    upload_file(source_file,dir)
  end      
end

#upload_file(source_file, dir) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/sync_fog/sync_fog_upload.rb', line 29

def upload_file(source_file,dir)
  path = dir + source_file
  name = source_file.to_s      

  return if File.directory?(path)
  return if @skip && @container.files.head(name)

  File.open(path) do |data|
    @container.files.create(key: name, body: data, metadata: @meta)
    @meta 
  end
end