Example #1
0
        /// <summary>
        /// Gets a url for uploading files.
        /// </summary>
        /// <param name="bucketId">The ID of the bucket that you want to upload to.</param>
        /// <param name="cacheTTL">An absolute cache expiration time to live (TTL) relative to now.</param>
        /// <exception cref="AuthenticationException">Thrown when authentication fails.</exception>
        /// <exception cref="ApiException">Thrown when an error occurs during client operation.</exception>
        async Task <IApiResults <GetUploadUrlResponse> > IStorageFiles.GetUploadUrlAsync
            (string bucketId, TimeSpan cacheTTL)
        {
            var request = new GetUploadUrlRequest(bucketId);

            return(await _client.GetUploadUrlAsync(request, cacheTTL, _cancellationToken));
        }
        /// <summary>
        /// Sets up a GetUploadUrlRequest that will upload the bytes supplied to the correct
        /// location after the response has been received
        /// </summary>
        public static GetUploadUrlRequest GetUploadUrlRequestAndUploadFile(byte[] fileData, String fileName)
        {
            GetUploadUrlRequest r = new GetUploadUrlRequest();

            r.AddCompleter(new FileUploader(fileData, fileName).Upload);
            return(r);
        }
Example #3
0
        public async Task <FileUrl> GetUploadUrlAsync(int expiryInMinutes = 5)
        {
            var request = new GetUploadUrlRequest
            {
                MimeType        = this.MimeType,
                FileName        = this.FileName,
                ExpiryInMinutes = expiryInMinutes
            };
            var response = await request.ExecuteAsync();

            return(new FileUrl(response.Filename, response.Url));
        }
Example #4
0
        /// <summary>
        /// Uploads content by bucket id.
        /// </summary>
        /// <param name="request">The upload file request content to send.</param>
        /// <param name="content">The upload content to receive.</param>
        /// <param name="progress">A progress action which fires every time the write buffer is cycled.</param>
        /// <param name="cancel">The cancellation token to cancel operation.</param>
        public async Task <IApiResults <UploadFileResponse> > UploadAsync
            (UploadFileByBucketIdRequest request, Stream content, IProgress <ICopyProgress> progress, CancellationToken cancel)
        {
            return(await _policy.InvokeUpload.ExecuteAsync(async() =>
            {
                if (content.Length < Options.UploadCutoffSize)
                {
                    var urlRequest = new GetUploadUrlRequest(request.BucketId);
                    var urlResults = await GetUploadUrlAsync(urlRequest, cancel).ConfigureAwait(false);

                    if (urlResults.IsSuccessStatusCode)
                    {
                        var response = urlResults.Response;
                        var fileRequest = new UploadFileRequest(response.UploadUrl, request.FileName, response.AuthorizationToken)
                        {
                            ContentType = request.ContentType,
                            FileInfo = request.FileInfo
                        };

                        return await UploadFileAsync(fileRequest, content, progress, cancel).ConfigureAwait(false);
                    }

                    return new ApiResults <UploadFileResponse>(urlResults.HttpResponse, urlResults.Error);
                }
                else
                {
                    var largeFileRequest = new UploadLargeFileRequest(request.BucketId, request.FileName, content)
                    {
                        ContentType = request.ContentType,
                        FileInfo = request.FileInfo
                    };

                    return await UploadLargeFileAsync(largeFileRequest, progress, cancel).ConfigureAwait(false);
                }
            }));
        }
Example #5
0
 /// <summary>
 /// Begin a new GetUploadUrlRequest
 /// </summary>
 /// <param name="requestData"></param>
 /// <returns></returns>
 public GetUploadUrlResponse GetUploadUrlRequest(GetUploadUrlRequest requestData)
 {
     return(JsonConvert.DeserializeObject <GetUploadUrlResponse>(Requestor.PostString(Urls.GetUploadUrlRequest, JsonHelper.SerializeData(requestData)).ResponseJson));
 }
Example #6
0
        /// <summary>
        /// Begin a new asynchronous GetUploadUrlRequest
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public async Task <GetUploadUrlResponse> GetUploadUrlRequestAsync(GetUploadUrlRequest requestData)
        {
            var res = await Requestor.PostStringAsync(Urls.GetUploadUrlRequest, JsonHelper.SerializeData(requestData));

            return(JsonConvert.DeserializeObject <GetUploadUrlResponse>(res.ResponseJson));
        }