Class: CartBinaryUploader::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/storage/storage_type.rb

Direct Known Subclasses

GoogleCloudStorage, S3CloudStorage

Constant Summary collapse

FRAMEWORK_EXTENSION_NAME =
'.framework'.freeze
JSON_EXTENSION_NAME =
'.json'.freeze
JSON_EXTENSION_ZIP =
'.zip'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bucket_name, framework_name, framework_version) ⇒ Storage

Returns a new instance of Storage.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/storage/storage_type.rb', line 23

def initialize(bucket_name,
               framework_name,
               framework_version)
  @bucket_name = bucket_name
  @framework_name = framework_name
  @framework_version = framework_version

  CartLogger.log_info 'Updating storage resource file names'
  create_files_names_resource
  CartLogger.log_info 'Creating storage'
  create_storage
  CartLogger.log_info "Creating bucket name: #{@bucket_name}"
  create_bucket
end

Instance Attribute Details

#bucketObject

Returns the value of attribute bucket.



15
16
17
# File 'lib/storage/storage_type.rb', line 15

def bucket
  @bucket
end

#bucket_nameObject

Returns the value of attribute bucket_name.



12
13
14
# File 'lib/storage/storage_type.rb', line 12

def bucket_name
  @bucket_name
end

#bucket_objectObject

Returns the value of attribute bucket_object.



17
18
19
# File 'lib/storage/storage_type.rb', line 17

def bucket_object
  @bucket_object
end

#framework_nameObject

Returns the value of attribute framework_name.



13
14
15
# File 'lib/storage/storage_type.rb', line 13

def framework_name
  @framework_name
end

#framework_name_destinationObject

Returns the value of attribute framework_name_destination.



20
21
22
# File 'lib/storage/storage_type.rb', line 20

def framework_name_destination
  @framework_name_destination
end

#framework_name_sourceObject

Returns the value of attribute framework_name_source.



19
20
21
# File 'lib/storage/storage_type.rb', line 19

def framework_name_source
  @framework_name_source
end

#framework_versionObject

Returns the value of attribute framework_version.



14
15
16
# File 'lib/storage/storage_type.rb', line 14

def framework_version
  @framework_version
end

#json_fileObject

Returns the value of attribute json_file.



16
17
18
# File 'lib/storage/storage_type.rb', line 16

def json_file
  @json_file
end

#json_file_pathObject

Returns the value of attribute json_file_path.



21
22
23
# File 'lib/storage/storage_type.rb', line 21

def json_file_path
  @json_file_path
end

Instance Method Details

#copy_local_file(framework_name_source, framework_name_destination) ⇒ Object



122
123
124
# File 'lib/storage/storage_type.rb', line 122

def copy_local_file(framework_name_source, framework_name_destination)
  FileUtils.copy_file(framework_name_source, framework_name_destination)
end

#create_bucketObject



42
43
44
# File 'lib/storage/storage_type.rb', line 42

def create_bucket
  throw :not_implemented, 'The current method not implemented'
end

#create_empty_json_file(file_name) ⇒ Object



142
143
144
145
# File 'lib/storage/storage_type.rb', line 142

def create_empty_json_file(file_name)
  json_object = JSON.parse('{}')
  save_json_object(file_name, json_object)
end

#create_files_names_resourceObject



46
47
48
49
50
# File 'lib/storage/storage_type.rb', line 46

def create_files_names_resource
  @framework_name_source = @framework_name + FRAMEWORK_EXTENSION_NAME + JSON_EXTENSION_ZIP
  @framework_name_destination = @framework_name + FRAMEWORK_EXTENSION_NAME + "." + @framework_version + JSON_EXTENSION_ZIP
  @json_file_path = @framework_name + JSON_EXTENSION_NAME
end

#create_framework_with_version_nameObject



82
83
84
# File 'lib/storage/storage_type.rb', line 82

def create_framework_with_version_name
  copy_local_file(@framework_name_source, @framework_name_destination)
end

#create_local_file(file_name) ⇒ Object



106
107
108
# File 'lib/storage/storage_type.rb', line 106

def create_local_file(file_name)
  throw :not_implemented, "The current method not implemented"
end

#create_public_url(file_path) ⇒ Object



102
103
104
# File 'lib/storage/storage_type.rb', line 102

def create_public_url(file_path)
  throw :not_implemented, "The current method not implemented"
end

#create_storageObject



38
39
40
# File 'lib/storage/storage_type.rb', line 38

def create_storage
  throw :not_implemented, 'The current method not implemented'
end

#download_config_json_file(from_file) ⇒ Object



114
115
116
# File 'lib/storage/storage_type.rb', line 114

def download_config_json_file(from_file)
  throw :not_implemented, "The current method not implemented"
end

#file_on_storage_cloud(file) ⇒ Object



110
111
112
# File 'lib/storage/storage_type.rb', line 110

def file_on_storage_cloud(file)
  throw :not_implemented, "The current method not implemented"
end

#load_json_object(json_path) ⇒ Object



126
127
128
129
130
131
132
133
# File 'lib/storage/storage_type.rb', line 126

def load_json_object(json_path)
  CartLogger.log_info 'Loading JSON file'
  json = File.read(json_path)
  object = JSON.parse(json)
  CartLogger.log_info object
  CartLogger.log_info 'JSON Loaded'
  object
end

#save_json_object(json_path, json_object) ⇒ Object



135
136
137
138
139
140
# File 'lib/storage/storage_type.rb', line 135

def save_json_object(json_path, json_object)
  binary_json = JSON.pretty_generate(json_object)
  CartLogger.log_info "Saving JSON Object in: #{json_path} JSON: #{binary_json}"
  File.write(json_path, binary_json)
  CartLogger.log_info 'JSON Saved'
end

#sync_json_framework_versionObject



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/storage/storage_type.rb', line 86

def sync_json_framework_version
  if file_on_storage_cloud(@json_file_path)
    @json_file = download_config_json_file(@json_file_path)
    if @json_file.nil?
      throw :could_not_download_json_file, "JSON With name: #{@json_file_path}"
    end
  else
    CartLogger.log_warn "Creating empty json because it not exsits yet on cloud"
    create_empty_json_file(@json_file_path)
  end
end

#update_json_with_url(json_object, url) ⇒ Object



78
79
80
# File 'lib/storage/storage_type.rb', line 78

def update_json_with_url(json_object, url)
  json_object[@framework_version] = url
end

#upload_file(file_path) ⇒ Object



98
99
100
# File 'lib/storage/storage_type.rb', line 98

def upload_file(file_path)
  throw :not_implemented, "The current method not implemented"
end

#upload_frameworkObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/storage/storage_type.rb', line 52

def upload_framework
  CartLogger.log_info 'Prepering to upload file to cloud'
  CartLogger.log_info "Framework Source: #{@framework_name_source}"
  CartLogger.log_info "Framework Destination: #{@framework_name_destination}"
  CartLogger.log_info "JSON Path: #{@json_file_path}"
  CartLogger.log_info "Verifying if the version file #{@framework_name_destination} already exists"

  unless file_on_storage_cloud(@framework_name_destination)
    CartLogger.log_info "File version #{@framework_version} not exists yet, starting generate file on cloud"
    sync_json_framework_version
    create_framework_with_version_name

    shared_url = upload_file(@framework_name_destination)
    json_object = load_json_object(@json_file_path)

    update_json_with_url(json_object, shared_url)
    save_json_object(@json_file_path, json_object)

    CartLogger.log_info 'Starting upload file to storage cloud'
    upload_file(@json_file_path)
    CartLogger.log_info 'Uploaded complete'
  else
    throw :the_version_file_already_exists, "The current version: #{@framework_version} already exists on cloud"
  end
end

#upload_json(json_path) ⇒ Object



118
119
120
# File 'lib/storage/storage_type.rb', line 118

def upload_json(json_path)
  throw :not_implemented, "The current method not implemented"
end