22using System . Text . Json ;
33using System . Text . Json . Nodes ;
44using AssemblyAI . Core ;
5+ using AssemblyAI . Files ;
6+
57// ReSharper disable MemberCanBePrivate.Global
68// ReSharper disable UnusedMember.Global
79
@@ -22,17 +24,28 @@ internal ExtendedTranscriptsClient(RawClient client, AssemblyAIClient assemblyAI
2224
2325 public async Task < Transcript > SubmitAsync ( FileInfo audioFile , TranscriptOptionalParams transcriptParams )
2426 {
25- using var audioFileStream = audioFile . OpenRead ( ) ;
26- return await SubmitAsync ( audioFileStream , transcriptParams ) . ConfigureAwait ( false ) ;
27+ var uploadedFile = await _assemblyAIClient . Files . UploadAsync ( audioFile ) . ConfigureAwait ( false ) ;
28+ return await SubmitAsync ( uploadedFile , transcriptParams ) . ConfigureAwait ( false ) ;
2729 }
2830
2931 public Task < Transcript > SubmitAsync ( Stream audioFileStream ) =>
3032 SubmitAsync ( audioFileStream , new TranscriptOptionalParams ( ) ) ;
3133
32- public async Task < Transcript > SubmitAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
34+ public Task < Transcript > SubmitAsync ( Stream audioFileStream , bool disposeStream ) =>
35+ SubmitAsync ( audioFileStream , disposeStream , new TranscriptOptionalParams ( ) ) ;
36+
37+ public Task < Transcript > SubmitAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
38+ => SubmitAsync ( audioFileStream , false , transcriptParams ) ;
39+
40+ public async Task < Transcript > SubmitAsync (
41+ Stream audioFileStream ,
42+ bool disposeStream ,
43+ TranscriptOptionalParams transcriptParams
44+ )
3345 {
34- var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream ) . ConfigureAwait ( false ) ;
35- return await SubmitAsync ( new Uri ( fileUpload . UploadUrl ) , transcriptParams ) . ConfigureAwait ( false ) ;
46+ var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream , disposeStream )
47+ . ConfigureAwait ( false ) ;
48+ return await SubmitAsync ( fileUpload , transcriptParams ) . ConfigureAwait ( false ) ;
3649 }
3750
3851 public Task < Transcript > SubmitAsync ( Uri audioFileUrl ) => SubmitAsync ( audioFileUrl , new TranscriptOptionalParams ( ) ) ;
@@ -42,6 +55,13 @@ public async Task<Transcript> SubmitAsync(Uri audioFileUrl, TranscriptOptionalPa
4255 return await SubmitAsync ( CreateParams ( audioFileUrl , transcriptParams ) ) . ConfigureAwait ( false ) ;
4356 }
4457
58+ public Task < Transcript > SubmitAsync ( UploadedFile file ) => SubmitAsync ( file , new TranscriptOptionalParams ( ) ) ;
59+
60+ public async Task < Transcript > SubmitAsync ( UploadedFile file , TranscriptOptionalParams transcriptParams )
61+ {
62+ return await SubmitAsync ( CreateParams ( file . UploadUrl , transcriptParams ) ) . ConfigureAwait ( false ) ;
63+ }
64+
4565 public Task < Transcript > TranscribeAsync ( FileInfo audioFile ) =>
4666 TranscribeAsync ( audioFile , new TranscriptOptionalParams ( ) ) ;
4767
@@ -54,18 +74,35 @@ public async Task<Transcript> TranscribeAsync(FileInfo audioFile, TranscriptOpti
5474 public Task < Transcript > TranscribeAsync ( Stream audioFileStream ) =>
5575 TranscribeAsync ( audioFileStream , new TranscriptOptionalParams ( ) ) ;
5676
77+ public Task < Transcript > TranscribeAsync ( Stream audioFileStream , bool disposeStream ) =>
78+ TranscribeAsync ( audioFileStream , disposeStream , new TranscriptOptionalParams ( ) ) ;
79+
5780 public async Task < Transcript > TranscribeAsync ( Stream audioFileStream , TranscriptOptionalParams transcriptParams )
5881 {
5982 var fileUpload = await _assemblyAIClient . Files . UploadAsync ( audioFileStream ) . ConfigureAwait ( false ) ;
6083 return await TranscribeAsync ( new Uri ( fileUpload . UploadUrl ) , transcriptParams ) . ConfigureAwait ( false ) ;
6184 }
6285
86+ public async Task < Transcript > TranscribeAsync ( Stream audioFileStream , bool disposeStream ,
87+ TranscriptOptionalParams transcriptParams )
88+ {
89+ var uploadedFile =
90+ await _assemblyAIClient . Files . UploadAsync ( audioFileStream , disposeStream ) . ConfigureAwait ( false ) ;
91+ return await TranscribeAsync ( uploadedFile , transcriptParams ) . ConfigureAwait ( false ) ;
92+ }
93+
6394 public Task < Transcript > TranscribeAsync ( Uri audioFileUrl ) =>
6495 TranscribeAsync ( audioFileUrl , new TranscriptOptionalParams ( ) ) ;
6596
6697 public Task < Transcript > TranscribeAsync ( Uri audioFileUrl , TranscriptOptionalParams transcriptParams )
6798 => TranscribeAsync ( CreateParams ( audioFileUrl , transcriptParams ) ) ;
6899
100+ public Task < Transcript > TranscribeAsync ( UploadedFile file ) =>
101+ TranscribeAsync ( file , new TranscriptOptionalParams ( ) ) ;
102+
103+ public Task < Transcript > TranscribeAsync ( UploadedFile file , TranscriptOptionalParams transcriptParams )
104+ => TranscribeAsync ( CreateParams ( file . UploadUrl , transcriptParams ) ) ;
105+
69106 public async Task < Transcript > TranscribeAsync ( TranscriptParams transcriptParams )
70107 {
71108 var transcript = await SubmitAsync ( transcriptParams ) . ConfigureAwait ( false ) ;
@@ -114,10 +151,13 @@ public async Task<Transcript> WaitUntilReady(
114151 }
115152
116153 private static TranscriptParams CreateParams ( Uri audioFileUrl , TranscriptOptionalParams optionalTranscriptParams )
154+ => CreateParams ( audioFileUrl . ToString ( ) , optionalTranscriptParams ) ;
155+
156+ private static TranscriptParams CreateParams ( string audioFileUrl , TranscriptOptionalParams optionalTranscriptParams )
117157 {
118158 var json = JsonUtils . Serialize ( optionalTranscriptParams ) ;
119159 var jsonObject = JsonUtils . Deserialize < JsonObject > ( json ) ;
120- jsonObject [ "audio_url" ] = audioFileUrl . ToString ( ) ;
160+ jsonObject [ "audio_url" ] = audioFileUrl ;
121161 var transcriptParams = jsonObject . Deserialize < TranscriptParams > ( ) ! ;
122162 return transcriptParams ;
123163 }
0 commit comments