22using System . Collections . Generic ;
33using System . IO ;
44using System . Runtime . CompilerServices ;
5- using System . Text ;
65using System . Threading ;
76using System . Threading . Tasks ;
87using Azure ;
@@ -16,7 +15,7 @@ namespace ManagedCode.Storage.Azure;
1615
1716public class AzureStorage : IAzureStorage
1817{
19- private BlobContainerClient _blobContainerClient ;
18+ private readonly BlobContainerClient _blobContainerClient ;
2019 private readonly AzureStorageOptions _options ;
2120
2221 public AzureStorage ( AzureStorageOptions options )
@@ -150,17 +149,18 @@ public async Task<BlobMetadata> GetBlobAsync(string blobName, CancellationToken
150149 } ;
151150 }
152151
153- public async IAsyncEnumerable < BlobMetadata > GetBlobsAsync ( IEnumerable < string > blobNames , CancellationToken cancellationToken = default )
152+ public async IAsyncEnumerable < BlobMetadata > GetBlobsAsync ( IEnumerable < string > blobNames ,
153+ [ EnumeratorCancellation ] CancellationToken cancellationToken = default )
154154 {
155155 foreach ( var blob in blobNames )
156156 {
157157 yield return await GetBlobAsync ( blob , cancellationToken ) ;
158158 }
159159 }
160160
161- public async IAsyncEnumerable < BlobMetadata > GetBlobListAsync ( CancellationToken cancellationToken = default )
161+ public async IAsyncEnumerable < BlobMetadata > GetBlobListAsync ( [ EnumeratorCancellation ] CancellationToken cancellationToken = default )
162162 {
163- var blobs = _blobContainerClient . GetBlobsAsync ( ) ;
163+ var blobs = _blobContainerClient . GetBlobsAsync ( cancellationToken : cancellationToken ) ;
164164
165165 await foreach ( var item in blobs . AsPages ( ) )
166166 {
@@ -181,14 +181,14 @@ public async IAsyncEnumerable<BlobMetadata> GetBlobListAsync(CancellationToken c
181181 public async Task UploadStreamAsync ( string blobName , Stream dataStream , CancellationToken cancellationToken = default )
182182 {
183183 var blobClient = _blobContainerClient . GetBlobClient ( blobName ) ;
184-
184+
185185 try
186186 {
187187 await blobClient . UploadAsync ( dataStream , cancellationToken ) ;
188188 }
189189 catch ( RequestFailedException )
190190 {
191- await CreateContainerAsync ( ) ;
191+ await CreateContainerAsync ( cancellationToken ) ;
192192 await blobClient . UploadAsync ( dataStream , cancellationToken ) ;
193193 }
194194 }
@@ -203,7 +203,7 @@ public async Task UploadAsync(string blobName, string content, CancellationToken
203203 }
204204 catch ( RequestFailedException )
205205 {
206- await CreateContainerAsync ( ) ;
206+ await CreateContainerAsync ( cancellationToken ) ;
207207 await blobClient . UploadAsync ( BinaryData . FromString ( content ) , cancellationToken ) ;
208208 }
209209 }
@@ -220,7 +220,7 @@ public async Task UploadFileAsync(string blobName, string pathToFile, Cancellati
220220 }
221221 catch ( RequestFailedException )
222222 {
223- await CreateContainerAsync ( ) ;
223+ await CreateContainerAsync ( cancellationToken ) ;
224224 await blobClient . UploadAsync ( fs , cancellationToken ) ;
225225 }
226226 }
@@ -251,7 +251,7 @@ public async Task UploadAsync(BlobMetadata blobMetadata, byte[] data, Cancellati
251251 }
252252 catch ( RequestFailedException )
253253 {
254- await CreateContainerAsync ( ) ;
254+ await CreateContainerAsync ( cancellationToken ) ;
255255 await blobClient . UploadAsync ( BinaryData . FromBytes ( data ) , cancellationToken ) ;
256256 }
257257 }
@@ -268,10 +268,10 @@ public async Task<string> UploadAsync(string content, CancellationToken cancella
268268 }
269269 catch ( RequestFailedException )
270270 {
271- await CreateContainerAsync ( ) ;
271+ await CreateContainerAsync ( cancellationToken ) ;
272272 await blobClient . UploadAsync ( BinaryData . FromString ( content ) , cancellationToken ) ;
273273 }
274-
274+
275275 return fileName ;
276276 }
277277
@@ -286,7 +286,7 @@ public async Task<string> UploadAsync(Stream dataStream, CancellationToken cance
286286 }
287287 catch ( RequestFailedException )
288288 {
289- await CreateContainerAsync ( ) ;
289+ await CreateContainerAsync ( cancellationToken ) ;
290290 await blobClient . UploadAsync ( dataStream , cancellationToken ) ;
291291 }
292292
@@ -304,8 +304,8 @@ public async Task CreateContainerAsync(CancellationToken cancellationToken = def
304304 await _blobContainerClient . CreateIfNotExistsAsync ( PublicAccessType . BlobContainer , cancellationToken : cancellationToken ) ;
305305 }
306306
307- await _blobContainerClient . SetAccessPolicyAsync ( _options . PublicAccessType ) ;
307+ await _blobContainerClient . SetAccessPolicyAsync ( _options . PublicAccessType , cancellationToken : cancellationToken ) ;
308308 }
309-
309+
310310 #endregion
311311}
0 commit comments