lib/s3.rb in gridium-1.0.19 vs lib/s3.rb in gridium-1.0.20
- old
+ new
@@ -4,29 +4,37 @@
class GridiumS3
DELIMITER = "/"
def initialize(project_name, subdirectory_name='screenshots')
- Log.debug("initializing GridiumS3 with #{project_name} and #{subdirectory_name}")
+ Log.debug("[GRIDIUM::S3] initializing GridiumS3 with #{project_name} and #{subdirectory_name}")
Aws.config.update({ credentials: Aws::Credentials.new(ENV['S3_ACCESS_KEY_ID'], ENV['S3_SECRET_ACCESS_KEY']) , region: ENV['S3_DEFAULT_REGION']})
_validate_string(project_name)
_validate_string(subdirectory_name)
@project_name = _sanitize_string(project_name)
@subdirectory_name = _sanitize_string(subdirectory_name)
@bucket = Aws::S3::Resource.new().bucket(ENV['S3_ROOT_BUCKET'])
end
def save_file(absolute_path_of_file)
- Log.debug("attempting to save #{absolute_path_of_file} to s3")
+ Log.debug("[GRIDIUM::S3] attempting to save #{absolute_path_of_file} to s3")
_validate_path(absolute_path_of_file)
file_name = File.basename(absolute_path_of_file)
destination_name = create_s3_name(file_name)
- @bucket.object(destination_name).upload_file(absolute_path_of_file)
- @bucket.object(destination_name).wait_until_exists
- _verify_upload(destination_name, absolute_path_of_file)
- # @bucket.object(s3_name).presigned_url(:get, expires_in: 3600) #uncomment this if public url ends up not working out OPREQ-83850
- @bucket.object(destination_name).public_url
+ begin
+ @bucket.object(destination_name).upload_file(absolute_path_of_file)
+ @bucket.object(destination_name).wait_until_exists
+ _verify_upload(destination_name, absolute_path_of_file)
+ # @bucket.object(s3_name).presigned_url(:get, expires_in: 3600) #uncomment this if public url ends up not working out OPREQ-83850
+ return @bucket.object(destination_name).public_url
+ rescue Aws::S3::Errors::InvalidAccessKeyId
+ Log.error("[GRIDIUM::S3] unable to save file to s3 due to Aws::S3::Errors::InvalidAccessKeyId")
+ rescue Seahorse::Client::NetworkingError => error
+ Log.error("[GRIDIUM::S3] unable to save file to s3 due to underlying network error: #{error}")
+ rescue StandardErrer => error
+ Log.error("[GRIDIUM::S3] unable to save file to s3 due to unexpected error: #{error}")
+ end
end
def create_s3_name(file_name)
_validate_string(file_name)
file_name = _sanitize_string(file_name)
@@ -39,26 +47,26 @@
input_string = input_string.strip().split.join(" ").gsub(/[^\w.]/i, '_')
input_string
end
def _validate_string(input_string)
- Log.debug("attempting to validate #{input_string} for use as a name")
+ Log.debug("[GRIDIUM::S3] attempting to validate #{input_string} for use as a name")
if input_string.empty? or input_string.strip().empty? then
- raise(ArgumentError, "empty and/or whitespace file names are not wanted here.")
+ raise(ArgumentError, "[GRIDIUM::S3] empty and/or whitespace file names are not wanted here.")
end
end
def _validate_path(path_to_file)
- Log.debug("attmepting to validate #{path_to_file} as a legitimate path")
+ Log.debug("[GRIDIUM::S3] attempting to validate #{path_to_file} as a legitimate path")
if not File.exist? path_to_file then
- raise(ArgumentError, "this path doesn't resolve #{path_to_file}")
+ raise(ArgumentError, "[GRIDIUM::S3] this path doesn't resolve #{path_to_file}")
end
end
def _verify_upload(s3_name, local_absolute_path)
upload_size = @bucket.object(s3_name).content_length
local_size = File.size local_absolute_path
- Log.debug("file upload verified: #{upload_size == local_size}. upload size is #{upload_size} and local size is #{local_size}")
+ Log.debug("[GRIDIUM::S3] file upload verified: #{upload_size == local_size}. upload size is #{upload_size} and local size is #{local_size}")
upload_size == local_size
end
end
end