git.iko.soy/rowtype-yoga/purescript-supabase
on main help sign in
Add method for signing links
commitc7d37fded42b93a7ea128ecfff30649611fe6d19 authorMark Eibes <mark.eibes@gmail.com> dateMon 20 Mar 2023, 19:50 (4 years ago) parent1090378
3 files changed+15
spago.dhall+1 src/Supabase/Storage.js+3 src/Supabase/Storage.purs+11
spago.dhall+1
@@ -3,6 +3,7 @@
33 [ "aff"
44 , "aff-promise"
55 , "console"
6+ , "datetime"
67 , "effect"
78 , "either"
89 , "fetch"
src/Supabase/Storage.js+3
@@ -11,3 +11,6 @@ export const downloadImpl = (queryBuilder) => (filePath) => () =>
1111
1212export const removeImpl = (queryBuilder) => (filePaths) => () =>
1313 queryBuilder.remove(filePaths);
14+
15+export const createSignedUrlImpl = (queryBuilder) => filePath => options => () =>
16+ queryBuilder.createSignedUrl(filePath, options);
src/Supabase/Storage.purs+11
@@ -6,6 +6,7 @@ module Supabase.Storage
66 , remove
77 , storage
88 , upload
9+ , createSignedUrl
910 ) where
1011
1112import Prelude
@@ -26,6 +27,7 @@ import Type.Function (type ($))
2627import Supabase.Util as Util
2728import Web.File.Blob (Blob)
2829import Web.File.File as File
30+import Data.Time.Duration (Seconds)
2931
3032foreign import data Storage :: Type
3133
@@ -57,3 +59,12 @@ foreign import removeImpl :: QueryBuilder -> Array String -> Effect (Promise For
5759
5860remove ∷ Array String → QueryBuilder → Aff { error ∷ Maybe ResultError }
5961remove file qb = removeImpl qb file # Promise.toAffE >>= Util.fromJSON
62+
63+foreign import createSignedUrlImpl :: QueryBuilder -> String -> Seconds -> Effect (Promise { "data" :: Nullable { signedUrl :: String }, error :: Nullable ResultError })
64+
65+createSignedUrl :: String -> Seconds -> QueryBuilder -> Aff (SBTypes.Response { signedUrl :: String })
66+createSignedUrl file expiry qb = createSignedUrlImpl qb file expiry # Promise.toAffE <#> convert
67+ where
68+ convert { "data": d, error: error } = do
69+ let blob = Nullable.toMaybe d
70+ { "data": blob, error: Nullable.toMaybe error, status: Nothing }