Class: Timet::S3Supabase
- Inherits:
-
Object
show all
- Includes:
- S3Config
- Defined in:
- lib/timet/s3_supabase.rb
Overview
S3Supabase provides methods to interact with an S3-compatible storage service.
Defined Under Namespace
Classes: CustomError
Constant Summary
Constants included
from S3Config
Timet::S3Config::ENV_FILE_PATH, Timet::S3Config::LOG_FILE_PATH, Timet::S3Config::S3_ACCESS_KEY, Timet::S3Config::S3_ENDPOINT, Timet::S3Config::S3_REGION, Timet::S3Config::S3_SECRET_KEY
Instance Method Summary
collapse
Constructor Details
Returns a new instance of S3Supabase.
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/timet/s3_supabase.rb', line 56
def initialize
validate_env_vars
@logger = Logger.new(LOG_FILE_PATH)
@logger.level = Logger::INFO
@s3_client = Aws::S3::Client.new(
region: S3_REGION,
access_key_id: S3_ACCESS_KEY,
secret_access_key: S3_SECRET_KEY,
endpoint: S3_ENDPOINT,
force_path_style: true
)
end
|
Instance Method Details
#create_bucket(bucket_name) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/timet/s3_supabase.rb', line 69
def create_bucket(bucket_name)
@s3_client.create_bucket(bucket: bucket_name)
log(:info, "Bucket '#{bucket_name}' created successfully!")
true
rescue Aws::S3::Errors::BucketAlreadyExists
log(:error, "Error: The bucket '#{bucket_name}' already exists.")
false
rescue Aws::S3::Errors::BucketAlreadyOwnedByYou
log(:error, "Error: The bucket '#{bucket_name}' is already owned by you.")
false
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error creating bucket: #{e.message}")
false
end
|
#delete_bucket(bucket_name) ⇒ Object
129
130
131
132
133
134
135
136
|
# File 'lib/timet/s3_supabase.rb', line 129
def delete_bucket(bucket_name)
delete_all_objects_in_bucket(bucket_name)
@s3_client.delete_bucket(bucket: bucket_name)
log(:info, "Bucket '#{bucket_name}' deleted successfully.")
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error deleting bucket: #{e.message}")
raise e
end
|
#delete_object(bucket_name, object_key) ⇒ Object
121
122
123
124
125
126
127
|
# File 'lib/timet/s3_supabase.rb', line 121
def delete_object(bucket_name, object_key)
@s3_client.delete_object(bucket: bucket_name, key: object_key)
log(:info, "Object '#{object_key}' deleted successfully.")
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error deleting object: #{e.message}")
raise e
end
|
#download_file(bucket_name, object_key, download_path) ⇒ Object
113
114
115
116
117
118
119
|
# File 'lib/timet/s3_supabase.rb', line 113
def download_file(bucket_name, object_key, download_path)
response = @s3_client.get_object(bucket: bucket_name, key: object_key)
File.binwrite(download_path, response.body.read)
log(:info, "File '#{object_key}' downloaded successfully.")
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error downloading file: #{e.message}")
end
|
#list_objects(bucket_name) ⇒ Object
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/timet/s3_supabase.rb', line 84
def list_objects(bucket_name)
response = @s3_client.list_objects_v2(bucket: bucket_name)
contents = response.contents
if contents.empty?
log(:error, "No objects found in '#{bucket_name}'.")
return false
end
log_object_list(contents, bucket_name)
contents.map(&:to_h)
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error listing objects: #{e.message}")
nil
end
|
#upload_file(bucket_name, file_path, object_key) ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/timet/s3_supabase.rb', line 100
def upload_file(bucket_name, file_path, object_key)
File.open(file_path, 'rb') do |file|
@s3_client.put_object(
bucket: bucket_name,
key: object_key,
body: file
)
end
log(:info, "File '#{object_key}' uploaded successfully.")
rescue Aws::S3::Errors::ServiceError => e
log(:error, "Error uploading file: #{e.message}")
end
|