TeraGeneratedRuntimeBackendSubmission.swift (5344B)
1 import Foundation 2 import TeraKitBindings 3 4 extension TeraGeneratedRuntimeBackend { 5 func renewSubmissionUpload(input: TeraSubmissionMediaRequest, renewal: TeraSubmissionUploadRenewal) async throws -> TeraSubmissionUploadJob { 6 do { 7 let value = try await runtime.submissionRenewNativeUpload(input: input.generatedValue, renewal: renewal.generatedValue) 8 return try TeraGeneratedSubmission.upload(value, input: input) 9 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 10 } 11 12 func renewSubmissionMedia(input: TeraSubmissionMediaRequest, renewal: TeraSubmissionUploadRenewal) async throws -> TeraSubmissionStatus { 13 do { 14 let value = try await runtime.submissionRenewUploadMedia(input: input.generatedValue, renewal: renewal.generatedValue) 15 return try TeraGeneratedSubmission.operation(value, expected: input.request) 16 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 17 } 18 19 func uploadSubmissionMedia(input: TeraSubmissionMediaRequest) async throws -> TeraSubmissionStatus { 20 do { 21 let value = try await runtime.submissionUploadMedia(input: input.generatedValue) 22 return try TeraGeneratedSubmission.operation(value, expected: input.request) 23 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 24 } 25 26 func requestSubmissionStop(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 27 do { 28 let value = try await runtime.submissionRequestStop(request: request.generatedValue) 29 return try TeraGeneratedSubmission.operation(value, expected: request) 30 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 31 } 32 33 func reconcileSubmissionLocal(request: TeraSubmissionRequest, context: TeraLocalNetwork) async throws -> TeraSubmissionStatus { 34 do { 35 let value = try await runtime.submissionReconcileLocal(request: request.generatedValue, context: context.generatedValue) 36 return try TeraGeneratedSubmission.operation(value, expected: request) 37 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 38 } 39 40 func prepareSubmission(request: TeraSubmissionRequest, media: [TeraPreparedMediaHandle]) async throws -> TeraSubmissionStatus { 41 do { 42 let result = try await runtime.submissionPrepare(request: request.generatedValue, media: media.map(\.generatedValue)) 43 return try TeraGeneratedSubmission.operation(result, expected: request) 44 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 45 } 46 47 func recoverSubmission(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus? { 48 do { 49 let value = try await runtime.submissionRecover(request: request.generatedValue) 50 return try value.map { try TeraGeneratedSubmission.operation($0, expected: request) } 51 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 52 } 53 54 func submissionStatus(request: TeraSubmissionRequest) async throws -> TeraSubmissionStatus { 55 do { 56 let value = try await runtime.submissionStatus(request: request.generatedValue) 57 return try TeraGeneratedSubmission.operation(value, expected: request) 58 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 59 } 60 61 func advanceSubmission(request: TeraSubmissionRequest, expectedRevision: UInt64) async throws -> TeraSubmissionStatus { 62 do { 63 let value = try await runtime.submissionAdvance(request: request.generatedValue, expectedRevision: expectedRevision) 64 return try TeraGeneratedSubmission.operation(value, expected: request) 65 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 66 } 67 68 func listSubmissions(scope: TeraComposerScope, limit: UInt16, cursor: String?) async throws -> TeraSubmissionPage { 69 do { 70 let value = try await runtime.submissionPage(scope: scope.generatedValue, limit: limit, cursor: cursor) 71 return try TeraGeneratedSubmission.page(value, scope: scope, limit: limit) 72 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 73 } 74 75 func prepareSubmissionUpload(input: TeraSubmissionMediaRequest) async throws -> TeraSubmissionUploadJob { 76 do { 77 let value = try await runtime.submissionPrepareUpload(input: input.generatedValue) 78 return try TeraGeneratedSubmission.upload(value, input: input) 79 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 80 } 81 82 func completeSubmissionUpload(input: TeraSubmissionMediaRequest, response: TeraAddBackgroundUploadReceipt) async throws -> TeraSubmissionStatus { 83 do { 84 let current = try await submissionStatus(request: input.request) 85 guard response.draftID == current.intentID, response.expectedRevision == input.expectedRevision, 86 current.revision == input.expectedRevision else { throw TeraGeneratedSubmission.mismatch() } 87 let value = try await runtime.submissionCompleteUpload(input: input.generatedValue, response: FfiSubmissionUploadResponse( 88 schemaVersion: 1, statusCode: response.statusCode, mediaType: response.mediaType, 89 contentEncoding: response.contentEncoding, body: response.body 90 )) 91 return try TeraGeneratedSubmission.operation(value, expected: input.request) 92 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 93 } 94 } 95 96 extension TeraSubmissionUploadRenewal { 97 var generatedValue: FfiSubmissionUploadRenewal { 98 FfiSubmissionUploadRenewal(priorRevision: priorRevision, priorAttempt: priorAttempt, nativeFailed: nativeFailed) 99 } 100 }