private async Task <BulkUploadOperation> SubmitUploadAsyncImpl(SubmitUploadParameters parameters)
        {
            var request = new GetBulkUploadUrlRequest
            {
                ResponseMode = parameters.ResponseMode
            };

            GetBulkUploadUrlResponse getUploadUrlResponse;

            using (var apiService = new ServiceClient <IBulkService>(_authorizationData))
            {
                getUploadUrlResponse = await apiService.CallAsync((s, r) => s.GetBulkUploadUrlAsync(r), request).ConfigureAwait(false);
            }

            var uploadUrl = getUploadUrlResponse.UploadUrl;

            Action <HttpRequestHeaders> addHeaders = headers =>
            {
                headers.Add("DeveloperToken", _authorizationData.DeveloperToken);
                headers.Add("CustomerId", _authorizationData.CustomerId.ToString());
                headers.Add("AccountId", _authorizationData.AccountId.ToString());

                _authorizationData.Authentication.AddAuthenticationHeaders(headers);
            };

            string effectiveFileUploadPath = parameters.UploadFilePath;

            if (parameters.RenameUploadFileToMatchRequestId)
            {
                effectiveFileUploadPath = RenameUploadFileToMatchRequestId(effectiveFileUploadPath, getUploadUrlResponse);
            }

            var shouldCompress = parameters.CompressUploadFile && Path.GetExtension(effectiveFileUploadPath) != ".zip";

            string compressedFilePath = null;

            if (shouldCompress)
            {
                compressedFilePath = CompressUploadFile(effectiveFileUploadPath);

                effectiveFileUploadPath = compressedFilePath;
            }

            await HttpService.UploadFileAsync(new Uri(uploadUrl), effectiveFileUploadPath, addHeaders).ConfigureAwait(false);

            if (shouldCompress && compressedFilePath != null)
            {
                FileSystem.DeleteFile(compressedFilePath);
            }

            return(new BulkUploadOperation(getUploadUrlResponse.RequestId, _authorizationData, getUploadUrlResponse.TrackingId)
            {
                StatusPollIntervalInMilliseconds = StatusPollIntervalInMilliseconds
            });
        }
Ejemplo n.º 2
0
        // GetBulkUploadUrl helper method calls the GetBulkUploadUrl service operation
        // to request the upload identifier and upload Url via GetBulkUploadUrlResponse.
        private async Task <GetBulkUploadUrlResponse> GetBulkUploadUrl(ResponseMode responseMode, long accountId)
        {
            var request = new GetBulkUploadUrlRequest
            {
                ResponseMode = responseMode,
                AccountId    = accountId
            };

            return(await Service.CallAsync(
                       (s, r) => s.GetBulkUploadUrlAsync(r), request));
        }
        public async Task <GetBulkUploadUrlResponse> GetBulkUploadUrlAsync(ApiAuthentication auth, long accountId, ResponseMode responseMode, long?customerId)
        {
            var request = new GetBulkUploadUrlRequest
            {
                CustomerAccountId = string.Format("{0}", accountId),
                CustomerId        = string.Format("{0}", customerId),
                AccountId         = accountId,
                ResponseMode      = ResponseMode.ErrorsAndResults
            };

            try
            {
                SetAuthHelper.SetAuth(auth, request);

                return(await Check().GetBulkUploadUrlAsync(request));
            }
            catch (Exception ex)
            {
                Log(new LogEventArgs(ServiceType.Bulk, "GetBulkUploadUrlAsync", ex.Message, new { Request = request }, ex));
            }

            return(null);
        }
        // GetBulkUploadUrl helper method calls the GetBulkUploadUrl service operation 
        // to request the upload identifier and upload Url via GetBulkUploadUrlResponse.
        private async Task<GetBulkUploadUrlResponse> GetBulkUploadUrl(ResponseMode responseMode, long accountId)
        {
            var request = new GetBulkUploadUrlRequest
            {
                ResponseMode = responseMode,
                AccountId = accountId
            };

            return (await Service.CallAsync(
                (s, r) => s.GetBulkUploadUrlAsync(r), request));
        }