public async Task<MediaFireUploadConfiguration> GetUploadConfiguration( string fileName, long size, string folderKey = null, MediaFireActionOnDuplicate actionOnDuplicate = MediaFireActionOnDuplicate.Keep, DateTime? modificationTime = null) { var descriptor = new MediaFireUploadConfiguration(); var requestConfig = await RequestController.CreateHttpRequest(MediaFireApiUploadMethods.Simple); ConfigureForSimpleUpload(requestConfig, folderKey, actionOnDuplicate, modificationTime); descriptor.Endpoint = requestConfig.GetConfiguredPath(); descriptor.RequestUrl = RequestController.RemoveBaseUrlFromUrl(descriptor.Endpoint); descriptor.RequestHeaders.Add(new KeyValuePair<string, string>(MediaFireApiConstants.FileNameHeader, fileName)); descriptor.RequestHeaders.Add(new KeyValuePair<string, string>(MediaFireApiConstants.FileSizeHeader, size.ToString())); descriptor.RequestHeaders.Add(new KeyValuePair<string, string>(MediaFireApiConstants.ContentTypeHeader, MediaFireApiConstants.SimpleUploadContentTypeValue)); descriptor.Size = size; return descriptor; }
public async Task<MediaFireUploadDetails> Simple(MediaFireUploadConfiguration uploadConfiguration, Stream content, IProgress<MediaFireOperationProgress> progress = null, CancellationToken? tokenParam = null) { var token = tokenParam ?? CancellationToken.None; if (progress == null) progress = new Progress<MediaFireOperationProgress>(); var requestConfig = await RequestController.CreateHttpRequestForFullPath(uploadConfiguration.Endpoint, isChunkedOperation: true); requestConfig .Content(content, true) .WithProgress(progress, new MediaFireOperationProgress { TotalSize = uploadConfiguration.Size }, token); foreach (var headers in uploadConfiguration.RequestHeaders) { requestConfig.ContentHeader(headers.Key, headers.Value); } var res = await RequestController.Post<UploadResponse>(requestConfig); if (res.DoUpload.IsSuccess == false) throw new MediaFireException(string.Format(MediaFireErrorMessages.UploadErrorFormat, res.DoUpload.Result)); var uploadInfo = await PollUpload(res.DoUpload.Key); uploadInfo.Key = res.DoUpload.Key; return uploadInfo; }