Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
7370352
Add tests to cover new API
eBlender Feb 12, 2025
5d36f3e
Update Tests
eBlender Feb 13, 2025
7f1d359
Update IntegrationTests.swift
eBlender Feb 13, 2025
1e4e0dc
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 18, 2025
1e769cc
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 18, 2025
05700ea
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 18, 2025
b28c712
Update for CI
eBlender Feb 18, 2025
892a180
Change API stream and Tests.
eBlender Feb 25, 2025
3910d5e
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
2b943f1
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
ca4632c
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
f8f094c
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
934110e
Revert TODO
eBlender Feb 25, 2025
8558021
Merge branch 'streamable-functions' of https://github.com/eBlender/fi…
eBlender Feb 25, 2025
0adbe2a
Update Callable+Codable.swift
eBlender Feb 25, 2025
84c89c4
Update FirebaseFunctions/Tests/Unit/FunctionsTests.swift
eBlender Feb 25, 2025
3c35320
Update FirebaseFunctions/Tests/Unit/FunctionsTests.swift
eBlender Feb 25, 2025
92cddad
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 25, 2025
6917002
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 25, 2025
4c58a2f
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 25, 2025
c7125e1
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
7c4359a
Update FirebaseFunctions/Tests/Unit/FunctionsTests.swift
eBlender Feb 25, 2025
9bd6c73
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 25, 2025
d5c0ddc
Update FirebaseFunctions/Sources/Callable+Codable.swift
eBlender Feb 25, 2025
9d7e01e
Update FirebaseFunctions/Tests/Integration/IntegrationTests.swift
eBlender Feb 25, 2025
7e88c4d
Merge branch 'streamable-functions' of https://github.com/eBlender/fi…
eBlender Feb 25, 2025
1ebe1a0
Merge branch 'streamable-functions' into streamable-functions
eBlender Feb 25, 2025
c267d0a
Merge branch 'streamable-functions' of https://github.com/eBlender/fi…
eBlender Feb 26, 2025
6934e80
Update IntegrationTests.swift
eBlender Feb 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions FirebaseFunctions/Sources/Callable+Codable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public struct Callable<Request: Encodable, Response: Decodable> {
/// - Parameter completion: The block to call when the HTTPS request has completed.
public func call(_ data: Request,
completion: @escaping (Result<Response, Error>)
-> Void) {
-> Void) {
do {
let encoded = try encoder.encode(data)

Expand Down Expand Up @@ -154,7 +154,7 @@ public struct Callable<Request: Encodable, Response: Decodable> {
/// - completion: The block to call when the HTTPS request has completed.
public func callAsFunction(_ data: Request,
completion: @escaping (Result<Response, Error>)
-> Void) {
-> Void) {
call(data, completion: completion)
}

Expand Down Expand Up @@ -214,7 +214,8 @@ public extension Callable {
// TODO: Look into handling parameter-less functions.
// TODO: Ensure decoding failures are passed into reasonable errors.
@available(macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0, *)
func stream(_ data: Request) -> AsyncThrowingStream<Response, Error> {
func stream(_ data: Request? = nil) -> AsyncThrowingStream<Response, Error> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you revert the changes in the file apart from this line?


return AsyncThrowingStream { continuation in
Task {
do {
Expand Down Expand Up @@ -251,14 +252,14 @@ public extension Callable {
)
continuation.yield(boxedMessage.message)
}

}
} catch {
continuation.finish(throwing: error)
continuation.finish()
}
continuation.finish()
}
}
}

}

struct StreamResponseMessage<Message: Decodable>: Decodable {
Expand Down
30 changes: 30 additions & 0 deletions FirebaseFunctions/Tests/Integration/IntegrationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1121,3 +1121,33 @@ private class AuthTokenProvider: AuthInterop {
private class MessagingTokenProvider: NSObject, MessagingInterop {
var fcmToken: String? { return "fakeFCMToken" }
}


extension IntegrationTests {
@available(iOS 15.0, *)
func testGenStreamContent() async throws {
let callable: Callable<String, StreamResponse<String, String>> = functions.httpsCallable("genStream")
let stream = callable.stream("genStream")
//TODO fetch actual content.
for try await response in stream {
switch response {
case .message(let message):
print("Message: \(message)")
case .result(let result):
print("Result: \(result)")
}
}
}

@available(iOS 15.0, *)
func testGenStream_NoArgs_ThrowsError() async throws {
let callable: Callable<String, StreamResponse<String, String>> = functions.httpsCallable("genStream")
let stream = callable.stream("")
//TODO fetch actual content.
for try await _ in stream {
//TODO add logic to fetch the error after we enable
// throw(NSError(domain: "The response cannot be decoded to the given type.", code: 0, userInfo: nil))
// back in Callable+Codable func stream(_ data: Request?=nil) -> AsyncThrowingStream<Response, Error>
}
}
}
Loading