forked from GitLiveApp/firebase-kotlin-sdk
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfunctions.kt
81 lines (66 loc) · 2.67 KB
/
functions.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* Copyright (c) 2020 GitLive Ltd. Use of this source code is governed by the Apache 2.0 license.
*/
package dev.gitlive.firebase.functions
import dev.gitlive.firebase.*
import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.SerializationStrategy
import kotlinx.serialization.modules.EmptySerializersModule
import kotlinx.serialization.modules.SerializersModule
expect class FirebaseFunctions {
fun httpsCallable(name: String, timeout: Long? = null): HttpsCallableReference
fun useEmulator(host: String, port: Int)
}
abstract class BaseHttpsCallableReference {
suspend inline operator fun <reified T> invoke(
data: T,
encodeDefaults: Boolean = true,
serializersModule: SerializersModule = EmptySerializersModule()
) = invoke(encode(data, encodeDefaults, serializersModule)!!)
suspend operator fun <T> invoke(
strategy: SerializationStrategy<T>,
data: T,
encodeDefaults: Boolean = true,
serializersModule: SerializersModule = EmptySerializersModule()
): HttpsCallableResult = invoke(strategy, data, encodeDefaults, serializersModule)
abstract suspend fun invoke(encodedData: Any): HttpsCallableResult
}
expect class HttpsCallableReference : BaseHttpsCallableReference {
suspend operator fun invoke(): HttpsCallableResult
}
expect class HttpsCallableResult {
inline fun <reified T> data(): T
fun <T> data(strategy: DeserializationStrategy<T>, serializersModule: SerializersModule = EmptySerializersModule()): T
}
/** Returns the [FirebaseFunctions] instance of the default [FirebaseApp]. */
expect val Firebase.functions: FirebaseFunctions
/** Returns the [FirebaseFunctions] instance of a given [region]. */
expect fun Firebase.functions(region: String): FirebaseFunctions
/** Returns the [FirebaseFunctions] instance of a given [FirebaseApp]. */
expect fun Firebase.functions(app: FirebaseApp): FirebaseFunctions
/** Returns the [FirebaseFunctions] instance of a given [FirebaseApp] and [region]. */
expect fun Firebase.functions(app: FirebaseApp, region: String): FirebaseFunctions
expect class FirebaseFunctionsException: FirebaseException
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
expect val FirebaseFunctionsException.code: FunctionsExceptionCode
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")
expect val FirebaseFunctionsException.details: Any?
expect enum class FunctionsExceptionCode {
OK,
CANCELLED,
UNKNOWN,
INVALID_ARGUMENT,
DEADLINE_EXCEEDED,
NOT_FOUND,
ALREADY_EXISTS,
PERMISSION_DENIED,
RESOURCE_EXHAUSTED,
FAILED_PRECONDITION,
ABORTED,
OUT_OF_RANGE,
UNIMPLEMENTED,
INTERNAL,
UNAVAILABLE,
DATA_LOSS,
UNAUTHENTICATED
}