public static UploadChunk ToEntity(this UploadChunkModel model, long uploadID) { return(new UploadChunk { ChunkKey = model.Identifier.UploadChunkKey, UploadID = uploadID, ChunkIndex = model.ChunkIndex, PositionFrom = model.PositionFrom, PositionTo = model.PositionTo, State = model.State, Success = model.Success }); }
public async Task <UploadContextModel> UploadChunkAsync( UploadContextModel uploadContext, long from, long to, Stream inputStream, int chunkIndex, CancellationToken cancellationToken = default(CancellationToken) ) { var uploadStateToken = UploadTokenModel.Parse(uploadContext.UploadToken); var fileLocator = await FileStore.FileLocatorGetAsync(uploadStateToken.Identifier); var uploadChunk = new UploadChunkModel { Identifier = new UploadChunkIdentifier(uploadStateToken.Identifier, fileLocator + '.' + chunkIndex.ToString()), ChunkIndex = chunkIndex, PositionFrom = from, PositionTo = to }; uploadContext.SequentialState = await BackendClient.UploadChunkAsync( await LoadConfigurationAsync(uploadStateToken.Identifier as OrganizationIdentifier), uploadStateToken.Identifier.UploadKey, fileLocator, uploadChunk.Identifier.UploadChunkKey, chunkIndex, uploadContext.TotalChunks, uploadContext.SequentialState, uploadChunk.PositionFrom, uploadChunk.PositionTo, uploadContext.FileLength, inputStream, cancellationToken ); uploadChunk.State = uploadContext.SequentialState; uploadChunk.Success = true; await UploadChunkStore.InsertAsync(uploadChunk); return(uploadContext); }