1
+ import Foundation
1
2
import GoTrue
2
3
import PostgREST
3
4
import Realtime
@@ -16,29 +17,29 @@ import SupabaseStorage
16
17
///
17
18
/// For more usage information read the README.md
18
19
public class SupabaseClient {
19
- private var supabaseUrl : String
20
+ private var supabaseURL : URL
20
21
private var supabaseKey : String
21
22
private var schema : String
22
- private var restUrl : String
23
- private var realtimeUrl : String
24
- private var authUrl : String
25
- private var storageUrl : String
23
+ private var restURL : URL
24
+ private var realtimeURL : URL
25
+ private var authURL : URL
26
+ private var storageURL : URL
26
27
27
- /// Auth client for Supabase
28
- public var auth : GoTrueClient
28
+ /// Auth client for Supabase.
29
+ public let auth : GoTrueClient
29
30
30
31
/// Storage client for Supabase.
31
32
public var storage : SupabaseStorageClient {
32
33
var headers : [ String : String ] = defaultHeaders
33
34
headers [ " Authorization " ] = " Bearer \( auth. session? . accessToken ?? supabaseKey) "
34
- return SupabaseStorageClient ( url: storageUrl , headers: headers)
35
+ return SupabaseStorageClient ( url: storageURL . absoluteString , headers: headers)
35
36
}
36
37
37
38
/// Database client for Supabase.
38
39
public var database : PostgrestClient {
39
40
var headers : [ String : String ] = defaultHeaders
40
41
headers [ " Authorization " ] = " Bearer \( auth. session? . accessToken ?? supabaseKey) "
41
- return PostgrestClient ( url: restUrl , headers: headers, schema: schema)
42
+ return PostgrestClient ( url: restURL . absoluteString , headers: headers, schema: schema)
42
43
}
43
44
44
45
/// Realtime client for Supabase
@@ -48,31 +49,30 @@ public class SupabaseClient {
48
49
49
50
/// Init `Supabase` with the provided parameters.
50
51
/// - Parameters:
51
- /// - supabaseUrl : Unique Supabase project url
52
+ /// - supabaseURL : Unique Supabase project url
52
53
/// - supabaseKey: Supabase anonymous API Key
53
54
/// - schema: Database schema name, defaults to `public`
54
55
/// - autoRefreshToken: Toggles whether `Supabase.auth` automatically refreshes auth tokens. Defaults to `true`
55
56
public init (
56
- supabaseUrl : String ,
57
+ supabaseURL : URL ,
57
58
supabaseKey: String ,
58
59
schema: String = " public " ,
59
60
autoRefreshToken: Bool = true
60
61
) {
61
- self . supabaseUrl = supabaseUrl
62
+ self . supabaseURL = supabaseURL
62
63
self . supabaseKey = supabaseKey
63
64
self . schema = schema
64
- restUrl = " \( supabaseUrl ) /rest/v1 "
65
- realtimeUrl = " \( supabaseUrl ) /realtime/v1 "
66
- authUrl = " \( supabaseUrl ) /auth/v1 "
67
- storageUrl = " \( supabaseUrl ) /storage/v1 "
65
+ restURL = supabaseURL . appendingPathComponent ( " /rest/v1 " )
66
+ realtimeURL = supabaseURL . appendingPathComponent ( " /realtime/v1 " )
67
+ authURL = supabaseURL . appendingPathComponent ( " /auth/v1 " )
68
+ storageURL = supabaseURL . appendingPathComponent ( " /storage/v1 " )
68
69
69
- defaultHeaders = [ " X-Client-Info " : " supabase-swift/0.0.5 " , " apikey " : supabaseKey]
70
+ defaultHeaders = [ " X-Client-Info " : " supabase-swift/0.0.4 " , " apikey " : supabaseKey]
70
71
71
72
auth = GoTrueClient (
72
- url: authUrl,
73
- headers: defaultHeaders,
74
- autoRefreshToken: autoRefreshToken
73
+ url: authURL,
74
+ headers: defaultHeaders
75
75
)
76
- realtime = RealtimeClient ( endPoint: realtimeUrl , params: defaultHeaders)
76
+ realtime = RealtimeClient ( endPoint: realtimeURL . absoluteString , params: defaultHeaders)
77
77
}
78
78
}
0 commit comments