Skip to content

Commit d945381

Browse files
Merge pull request #44 from AppcentMobile/bugfix/stream-and-reconfigure
🎷 [UPDATE] Reconfigured and stream support changed.
2 parents 71238a4 + 0d6e369 commit d945381

10 files changed

Lines changed: 49 additions & 41 deletions

File tree

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ let package = Package(
1515
),
1616
],
1717
dependencies: [
18-
.package(url: "https://github.com/AppcentMobile/ACMNetworking.git", branch: "main"),
18+
.package(url: "https://github.com/AppcentMobile/ACMNetworking.git", exact: "1.2.0"),
1919
],
2020
targets: [
2121
.target(

Sources/ACMOpenAI/Callbacks/Chat/ChatCallback.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ public struct ChatCallback {}
77

88
public extension ChatCallback {
99
/// Create chat typealias
10-
typealias Create = (([ACMOAIChatResponse.Create?]) -> Void)?
10+
typealias Create = ((ACMOAIChatResponse.Create?) -> Void)?
1111
}

Sources/ACMOpenAI/Manager/Audio/ACMOAIAudioManager.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public extension ACMOAIAudioManager {
1414
/// - request: `ACMOAIAudioCreateRequest.Transcriptions` Model of possible requests
1515
///
1616
func createTranscriptions(request: ACMOAIAudioCreateRequest.Transcriptions, onSuccess: AudioCallback.CreateTranscriptions, onError: ACMGenericCallbacks.ErrorCallback) {
17-
var to = endpoint.set(path: AudioRoute.Create.transcriptions)
17+
guard var to = endpoint?.set(path: AudioRoute.Create.transcriptions)
1818
.set(method: .post)
1919
.add(param: ACMBodyModel(key: "file", value: request.file))
20-
.add(param: ACMBodyModel(key: "model", value: request.model))
20+
.add(param: ACMBodyModel(key: "model", value: request.model)) else { return }
2121

2222
if let prompt = request.prompt {
2323
to = to.add(param: ACMBodyModel(key: "prompt", value: prompt))
@@ -50,10 +50,10 @@ public extension ACMOAIAudioManager {
5050
/// - request: `ACMOAIAudioCreateRequest.Transcriptions` Model of possible requests
5151
///
5252
func createTranslations(request: ACMOAIAudioCreateRequest.Translations, onSuccess: AudioCallback.CreateTranslations, onError: ACMGenericCallbacks.ErrorCallback) {
53-
var to = endpoint.set(path: AudioRoute.Create.translations)
53+
guard var to = endpoint?.set(path: AudioRoute.Create.translations)
5454
.set(method: .post)
5555
.add(param: ACMBodyModel(key: "file", value: request.file))
56-
.add(param: ACMBodyModel(key: "model", value: request.model))
56+
.add(param: ACMBodyModel(key: "model", value: request.model)) else { return }
5757

5858
if let prompt = request.prompt {
5959
to = to.add(param: ACMBodyModel(key: "prompt", value: prompt))

Sources/ACMOpenAI/Manager/Base/BaseManager.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ public class BaseAPIManager: BaseManager {
2323
public required init() {
2424
super.init()
2525

26-
guard let config = network.plistUtils?
26+
endpoint = network.getEndpoint()
27+
28+
guard let config = network.getPlistUtils()
2729
.config(type: ACMOpenAIPlistModel.self) else { return }
2830

29-
endpoint = ACMEndpoint()
30-
.add(authHeader: ACMAuthModel(type: .bearer, value: config.apiKey))
31+
endpoint = endpoint.add(authHeader: ACMAuthModel(type: .bearer, value: config.apiKey))
3132

3233
if let organization = config.organization {
3334
endpoint = endpoint

Sources/ACMOpenAI/Manager/Chat/ACMOAIChatManager.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//
44

55
import ACMNetworking
6+
import Foundation
67

78
/// Chat manager for calling audio endpoints of Open AI
89
public class ACMOAIChatManager: BaseAPIManager {}
@@ -13,11 +14,14 @@ public extension ACMOAIChatManager {
1314
/// - Parameters:
1415
/// - request: `ACMOAIChatRequest` Model of possible requests
1516
///
16-
func create(request: ACMOAIChatRequest.Create, onSuccess: ChatCallback.Create, onError: ACMGenericCallbacks.ErrorCallback) {
17-
var to = endpoint.set(path: ChatRoute.create)
17+
func create(request: ACMOAIChatRequest.Create, onSuccess: ChatCallback.Create = nil, onPartial: ChatCallback.Create = nil, onError: ACMGenericCallbacks.ErrorCallback) {
18+
19+
guard var to = endpoint?.set(path: ChatRoute.create)
1820
.set(method: .post)
1921
.add(param: ACMBodyModel(key: "model", value: request.model))
20-
.add(param: ACMBodyModel(key: "messages", value: request.messages))
22+
.add(param: ACMBodyModel(key: "messages", value: request.messages)) else {
23+
return
24+
}
2125

2226
if let temperature = request.temperature {
2327
to = to.add(param: ACMBodyModel(key: "temperature", value: temperature))
@@ -62,14 +66,15 @@ public extension ACMOAIChatManager {
6266
let buildEndpoint = to.build()
6367

6468
if request.stream == true {
65-
network.request(to: buildEndpoint) { (response: [ACMOAIChatResponse.Create]) in
66-
onSuccess?(response)
69+
network.stream(to: buildEndpoint) { data in
70+
let response = try? JSONDecoder().decode(ACMOAIChatResponse.Create.self, from: data)
71+
onPartial?(response)
6772
} onError: { error in
6873
onError?(error)
6974
}
7075
} else {
7176
network.request(to: buildEndpoint) { (response: ACMOAIChatResponse.Create) in
72-
onSuccess?([response])
77+
onSuccess?(response)
7378
} onError: { error in
7479
onError?(error)
7580
}

Sources/ACMOpenAI/Manager/Embeddings/ACMOAIEmbeddingsManager.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public extension ACMOAIEmbeddingsManager {
1414
/// - request: `ACMOAIEmbeddingsRequest` Model of possible requests
1515
///
1616
func create(request: ACMOAIEmbeddingsRequest.Create, onSuccess: EmbeddingsCallback.Create, onError: ACMGenericCallbacks.ErrorCallback) {
17-
var to = endpoint.set(path: EmbeddingsRoute.create)
17+
guard var to = endpoint?.set(path: EmbeddingsRoute.create)
1818
.set(method: .post)
1919
.add(param: ACMBodyModel(key: "model", value: request.model))
20-
.add(param: ACMBodyModel(key: "input", value: request.input))
20+
.add(param: ACMBodyModel(key: "input", value: request.input)) else { return }
2121

2222
if let user = request.user {
2323
to = to.add(param: ACMBodyModel(key: "user", value: user))

Sources/ACMOpenAI/Manager/Files/ACMOAIFilesManager.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ public class ACMOAIFilesManager: BaseAPIManager {}
1010
public extension ACMOAIFilesManager {
1111
/// Lists files based on giving parameters and returns closure
1212
func list(onSuccess: FilesCallback.List, onError: ACMGenericCallbacks.ErrorCallback) {
13-
let to = endpoint.set(path: FilesRoute.list)
14-
.set(method: .get)
13+
guard let to = endpoint?.set(path: FilesRoute.list)
14+
.set(method: .get) else { return }
1515

1616
network.request(to: to.build()) { (response: ACMOAIFilesResponse.List) in
1717
onSuccess?(response)
@@ -28,10 +28,10 @@ public extension ACMOAIFilesManager {
2828
/// - request: `ACMOAIFilesRequest.Upload` Model of possible requests
2929
///
3030
func upload(request: ACMOAIFilesRequest.Upload, onSuccess: FilesCallback.Upload, onError: ACMGenericCallbacks.ErrorCallback) {
31-
let to = endpoint.set(path: FilesRoute.upload)
31+
guard let to = endpoint?.set(path: FilesRoute.upload)
3232
.set(method: .post)
3333
.add(param: ACMBodyModel(key: "file", value: request.file))
34-
.add(param: ACMBodyModel(key: "purpose", value: request.purpose))
34+
.add(param: ACMBodyModel(key: "purpose", value: request.purpose)) else { return }
3535

3636
network.request(to: to.build()) { (response: ACMOAIFilesResponse.Upload) in
3737
onSuccess?(response)
@@ -48,8 +48,8 @@ public extension ACMOAIFilesManager {
4848
/// - request: `ACMOAIFilesRequest.Delete` Model of possible requests
4949
///
5050
func delete(request: ACMOAIFilesRequest.Delete, onSuccess: FilesCallback.Delete, onError: ACMGenericCallbacks.ErrorCallback) {
51-
let to = endpoint.set(path: String(format: FilesRoute.delete, request.file_id))
52-
.set(method: .delete)
51+
guard let to = endpoint?.set(path: String(format: FilesRoute.delete, request.file_id))
52+
.set(method: .delete) else { return }
5353

5454
network.request(to: to.build()) { (response: ACMOAIFilesResponse.Delete) in
5555
onSuccess?(response)
@@ -66,8 +66,8 @@ public extension ACMOAIFilesManager {
6666
/// - request: `ACMOAIFilesRequest.Retrieve` Model of possible requests
6767
///
6868
func retrieve(request: ACMOAIFilesRequest.Retrieve, onSuccess: FilesCallback.Retrieve, onError: ACMGenericCallbacks.ErrorCallback) {
69-
let to = endpoint.set(path: String(format: FilesRoute.retrieve, request.file_id))
70-
.set(method: .get)
69+
guard let to = endpoint?.set(path: String(format: FilesRoute.retrieve, request.file_id))
70+
.set(method: .get) else { return }
7171

7272
network.request(to: to.build()) { (response: ACMOAIFilesResponse.Retrieve) in
7373
onSuccess?(response)
@@ -84,8 +84,8 @@ public extension ACMOAIFilesManager {
8484
/// - request: `ACMOAIFilesRequest.RetrieveContent` Model of possible requests
8585
///
8686
func retrieveContent(request: ACMOAIFilesRequest.RetrieveContent, onSuccess: FilesCallback.RetrieveContent, onError: ACMGenericCallbacks.ErrorCallback) {
87-
let to = endpoint.set(path: String(format: FilesRoute.retrieveContent, request.file_id))
88-
.set(method: .get)
87+
guard let to = endpoint?.set(path: String(format: FilesRoute.retrieveContent, request.file_id))
88+
.set(method: .get) else { return }
8989

9090
network.request(to: to.build()) { (response: String) in
9191
onSuccess?(response)

Sources/ACMOpenAI/Manager/Images/ACMOAIImagesManager.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ public extension ACMOAIImagesManager {
1414
/// - request: `ACMOAIImagesCreateRequest` Model of possible requests
1515
///
1616
func create(request: ACMOAIImagesRequest.Create, onSuccess: ImagesCallback.Create, onError: ACMGenericCallbacks.ErrorCallback) {
17-
var to = endpoint.set(path: ImagesRoute.create)
17+
guard var to = endpoint?.set(path: ImagesRoute.create)
1818
.set(method: .post)
19-
.add(param: ACMBodyModel(key: "prompt", value: request.prompt))
19+
.add(param: ACMBodyModel(key: "prompt", value: request.prompt)) else { return }
2020

2121
if let n = request.n {
2222
to = to.add(param: ACMBodyModel(key: "n", value: n))
@@ -49,10 +49,10 @@ public extension ACMOAIImagesManager {
4949
/// - request: `ACMOAIImagesCreateEditRequest` Model of possible requests
5050
///
5151
func createEdit(request: ACMOAIImagesRequest.CreateEdit, onSuccess: ImagesCallback.CreateEdit, onError: ACMGenericCallbacks.ErrorCallback) {
52-
var to = endpoint.set(path: ImagesRoute.createEdit)
52+
guard var to = endpoint?.set(path: ImagesRoute.createEdit)
5353
.set(method: .post)
5454
.add(param: ACMBodyModel(key: "image", value: request.image))
55-
.add(param: ACMBodyModel(key: "prompt", value: request.prompt))
55+
.add(param: ACMBodyModel(key: "prompt", value: request.prompt)) else { return }
5656

5757
if let mask = request.mask {
5858
to = to.add(param: ACMBodyModel(key: "mask", value: mask))
@@ -74,7 +74,7 @@ public extension ACMOAIImagesManager {
7474
to = to.add(param: ACMBodyModel(key: "user", value: user))
7575
}
7676

77-
network.request(to: endpoint.build()) { (response: ACMOAIImagesResponse.CreateEdit) in
77+
network.request(to: to.build()) { (response: ACMOAIImagesResponse.CreateEdit) in
7878
onSuccess?(response)
7979
} onError: { error in
8080
onError?(error)
@@ -89,9 +89,9 @@ public extension ACMOAIImagesManager {
8989
/// - request: `ACMOAIImagesCreateVariationRequest` Model of possible requests
9090
///
9191
func createVariation(request: ACMOAIImagesRequest.CreateVariation, onSuccess: ImagesCallback.CreateVariation, onError: ACMGenericCallbacks.ErrorCallback) {
92-
var to = endpoint.set(path: ImagesRoute.createVariation)
92+
guard var to = endpoint?.set(path: ImagesRoute.createVariation)
9393
.set(method: .post)
94-
.add(param: ACMBodyModel(key: "image", value: request.image))
94+
.add(param: ACMBodyModel(key: "image", value: request.image)) else { return }
9595

9696
if let n = request.n {
9797
to = to.add(param: ACMBodyModel(key: "n", value: n))
@@ -109,7 +109,7 @@ public extension ACMOAIImagesManager {
109109
to = to.add(param: ACMBodyModel(key: "user", value: user))
110110
}
111111

112-
network.request(to: endpoint.build()) { (response: ACMOAIImagesResponse.CreateVariation) in
112+
network.request(to: to.build()) { (response: ACMOAIImagesResponse.CreateVariation) in
113113
onSuccess?(response)
114114
} onError: { error in
115115
onError?(error)

Sources/ACMOpenAI/Manager/Models/ACMOAIModelsManager.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ public final class ACMOAIModelsManager: BaseAPIManager {}
1010
public extension ACMOAIModelsManager {
1111
/// Lists models based on giving parameters and returns closure
1212
func list(onSuccess: ModelsCallback.List, onError: ACMGenericCallbacks.ErrorCallback) {
13-
let to = endpoint.set(path: ModelsRoute.list)
14-
.set(method: .get)
13+
guard let to = endpoint?.set(path: ModelsRoute.list)
14+
.set(method: .get) else { return }
1515

1616
network.request(to: to.build()) { (response: ACMOAIModelsResponse.List) in
1717
onSuccess?(response)
@@ -28,8 +28,8 @@ public extension ACMOAIModelsManager {
2828
/// - model: `String` Model of possible requests
2929
///
3030
func retrieve(model: String, onSuccess: ModelsCallback.Retrieve, onError: ACMGenericCallbacks.ErrorCallback) {
31-
let to = endpoint.set(path: ACMPathModel(path: ModelsRoute.retrieve, value: model))
32-
.set(method: .get)
31+
guard let to = endpoint?.set(path: ACMPathModel(path: ModelsRoute.retrieve, value: model))
32+
.set(method: .get) else { return }
3333

3434
network.request(to: to.build()) { (response: ACMOAIModelsResponse.Retrieve) in
3535
onSuccess?(response)

Sources/ACMOpenAI/Manager/Moderations/ACMOAIModerationsManager.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ public extension ACMOAIModerationsManager {
1414
/// - request: `ACMOAIModerationsRequest` Model of possible requests
1515
///
1616
func create(request: ACMOAIModerationsRequest.Create, onSuccess: ModerationsCallback.Create, onError: ACMGenericCallbacks.ErrorCallback) {
17-
var to = endpoint.set(path: ModerationsRoute.create)
17+
guard var to = endpoint?.set(path: ModerationsRoute.create)
1818
.set(method: .post)
19-
.add(param: ACMBodyModel(key: "input", value: request.input))
19+
.add(param: ACMBodyModel(key: "input", value: request.input)) else {
20+
return
21+
}
2022

2123
if let model = request.model {
2224
to = to.add(param: ACMBodyModel(key: "model", value: model))

0 commit comments

Comments
 (0)