Skip to content

Commit ac3cfe4

Browse files
Add creation transcription method that returns string
1 parent d925c29 commit ac3cfe4

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

Sources/ExyteOpenAI/OpenAI+Audio.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,41 @@ public extension OpenAI {
4141
.eraseToAnyPublisher()
4242
}
4343

44+
func createTranscription(from payload: CreateTranscriptionPayload) -> AnyPublisher<String, OpenAIError> {
45+
audioProvider.requestPublisher(for: .createTranscription(payload: payload))
46+
.flatMap {
47+
guard let stringData = String(data: $0.data, encoding: .utf8) else {
48+
return Fail<String, OpenAIError>(error: .requestCreationFailed)
49+
.eraseToAnyPublisher()
50+
}
51+
return Just<String>(stringData)
52+
.setFailureType(to: OpenAIError.self)
53+
.eraseToAnyPublisher()
54+
}
55+
.eraseToAnyPublisher()
56+
}
57+
4458
func createTranslation(from payload: CreateTranslationPayload) -> AnyPublisher<Translation, OpenAIError> {
4559
audioProvider.requestPublisher(for: .createTranslation(payload: payload))
4660
.map { $0.data }
4761
.map(to: Translation.self, decoder: OpenAI.defaultDecoder)
4862
.eraseToAnyPublisher()
4963
}
5064

65+
func createTranslation(from payload: CreateTranslationPayload) -> AnyPublisher<String, OpenAIError> {
66+
audioProvider.requestPublisher(for: .createTranslation(payload: payload))
67+
.flatMap {
68+
guard let stringData = String(data: $0.data, encoding: .utf8) else {
69+
return Fail<String, OpenAIError>(error: .requestCreationFailed)
70+
.eraseToAnyPublisher()
71+
}
72+
return Just<String>(stringData)
73+
.setFailureType(to: OpenAIError.self)
74+
.eraseToAnyPublisher()
75+
}
76+
.eraseToAnyPublisher()
77+
}
78+
5179
}
5280

5381
// MARK: - Concurrency
@@ -62,6 +90,10 @@ public extension OpenAI {
6290
try await createTranscription(from: payload).async()
6391
}
6492

93+
func createTranscription(from payload: CreateTranscriptionPayload) async throws -> String {
94+
try await createTranscription(from: payload).async()
95+
}
96+
6597
func createTranslation(from payload: CreateTranslationPayload) async throws -> Translation {
6698
try await createTranslation(from: payload).async()
6799
}

0 commit comments

Comments
 (0)