This commit is contained in:
2026-08-28 11:08:34 +07:00
parent 4466320927
commit 99996c1b04
+14 -23
View File
@@ -1,20 +1,19 @@
module garageS3
export
GarageStorage,
put_file,
get_file,
list_files,
delete_file
GarageStorage, put_file, get_file, list_files, delete_file,
set_lifecycle_expiration, get_lifecycle, delete_lifecycle
using AWS, AWSS3
using AWS
@service S3
using AWSS3
# ---------------------------------------------- 100 --------------------------------------------- #
# Garage uses Path-Style routing (https://s3-api.my-domain.com/bucket/key).
# this file use local AWS config
""" Example
storage = GarageStorage(
storage = GeneralUtils.GarageStorage(
"https://s3-api.yiem.cc",
"GKb080154a2e5b19100b1b2c6e", # key ID (create at garage-ui.yiem.cc)
"a2c6b1379c2f731d3e6e5a408dd4d6cffca7511717675f55114ff94828febca1", # key ID's secret key
@@ -22,9 +21,8 @@ storage = GarageStorage(
)
# Safe to run inside concurrent HTTP handlers (e.g., Oxygen.jl, HTTP.jl)
put_file(storage, "users-1005.json", "{\"status\": \"active\"}")
keys = list_files(storage)
data = String(get_file(storage, "users-1004.json"))
GeneralUtils.put_file(storage, "users-1005.json", "{\"status\": \"active\"}")
keys = GeneralUtils.list_files(storage)
println("Read back: ", data)
println("Bucket keys: ", keys)
@@ -35,7 +33,7 @@ curl -v \
http://192.168.88.106:3902/users-1002.json
# test with API
data = String(get_file(storage, "users-1005.json"))
data = String(GeneralUtils.get_file(storage, "users-1005.json"))
# test with a browser
https://s3-web.mydomain.com/my_bucket_name/users-1005.json
@@ -176,7 +174,7 @@ function (pf::put_file)(key::String, data::Union{String, Vector{UInt8}})::String
end
# Proceed if the key is flat
s3_put(pf.storage.config, pf.storage.bucket, key, data)
AWSS3.s3_put(pf.storage.config, pf.storage.bucket, key, data)
println("Successfully uploaded: ", key)
# file download URL
@@ -217,7 +215,7 @@ function put_file(storage::GarageStorage, key::String, data::Union{String, Vecto
end
# Proceed if the key is flat
s3_put(storage.config, storage.bucket, key, data)
AWSS3.s3_put(storage.config, storage.bucket, key, data)
println("Successfully uploaded: ", key)
# file download URL
@@ -244,7 +242,7 @@ julia> data = String(get_file(storage, "test.json"))
```
"""
function get_file(storage::GarageStorage, key::String)::Vector{UInt8}
return s3_get(storage.config, storage.bucket, key)
return AWSS3.s3_get(storage.config, storage.bucket, key)
end
""" List all object keys in the Garage S3 bucket.
@@ -267,7 +265,7 @@ julia> keys = list_files(storage)
"""
function list_files(storage::GarageStorage)
# Approach 2: s3_list_objects returns a Vector of Dicts with object details
objects = s3_list_objects(storage.config, storage.bucket)
objects = AWSS3.s3_list_objects(storage.config, storage.bucket)
return [obj["Key"] for obj in objects]
end
@@ -285,7 +283,7 @@ julia> delete_file(storage, "test.json")
```
"""
function delete_file(storage::GarageStorage, key::String)
s3_delete(storage.config, storage.bucket, key)
AWSS3.s3_delete(storage.config, storage.bucket, key)
end
@@ -296,11 +294,4 @@ end
end # module GarageS3