git.iko.soy/rowtype-yoga/purescript-supabase
on main help sign in
Add method for signing links
c7d37fdMark Eibes
spago.dhall+1
@@ -3,6 +3,7 @@
3 [ "aff"
3 [ "aff"
4 , "aff-promise"
4 , "aff-promise"
5 , "console"
5 , "console"
6+ , "datetime"
6 , "effect"
7 , "effect"
7 , "either"
8 , "either"
8 , "fetch"
9 , "fetch"
src/Supabase/Storage.js+3
@@ -11,3 +11,6 @@ export const downloadImpl = (queryBuilder) => (filePath) => () =>
11
11
12export const removeImpl = (queryBuilder) => (filePaths) => () =>
12export const removeImpl = (queryBuilder) => (filePaths) => () =>
13 queryBuilder.remove(filePaths);
13 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
6 , remove
6 , remove
7 , storage
7 , storage
8 , upload
8 , upload
9+ , createSignedUrl
9 ) where
10 ) where
10
11
11import Prelude
12import Prelude
@@ -26,6 +27,7 @@ import Type.Function (type ($))
26import Supabase.Util as Util
27import Supabase.Util as Util
27import Web.File.Blob (Blob)
28import Web.File.Blob (Blob)
28import Web.File.File as File
29import Web.File.File as File
30+import Data.Time.Duration (Seconds)
29
31
30foreign import data Storage :: Type
32foreign import data Storage :: Type
31
33
@@ -57,3 +59,12 @@ foreign import removeImpl :: QueryBuilder -> Array String -> Effect (Promise For
57
59
58remove ∷ Array String → QueryBuilder → Aff { error ∷ Maybe ResultError }
60remove ∷ Array String → QueryBuilder → Aff { error ∷ Maybe ResultError }
59remove file qb = removeImpl qb file # Promise.toAffE >>= Util.fromJSON
61remove 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 }