/// <summary> /// Uploads a single chunk /// </summary> /// <param name="uploadSessionId"></param> private void UploadSingleChunk(string uploadSessionId, byte [] uploadDataBuffer, int numBytes) { var urlAppendChunk = Urls.Url_AppendFileUploadChunk(Login, uploadSessionId); var uploadChunkAsMime = new MimeWriterFileUploadChunk(uploadDataBuffer, numBytes); var response = this.CreateAndSendMimeLoggedInRequest(urlAppendChunk, HttpMethod.Put, uploadChunkAsMime); //NOTE: This command requires a PUT not a GET using (response) { var xmlDoc = GetHttpResponseAsXml(response); //Get all the workbook nodes var xDoc = xmlDoc.ToXDocument(); var uploadInfo = xDoc.Root.Descendants(XName.Get("fileUpload", XmlNamespace)).FirstOrDefault(); var chunkUploadXml = uploadInfo.ToXmlNode(); var verifySessionId = chunkUploadXml.Attributes["uploadSessionId"].Value; var fileSizeMB = chunkUploadXml.Attributes["fileSize"].Value; if (verifySessionId != uploadSessionId) { Login.Logger.Error("Upload sessions do not match! " + uploadSessionId + "/" + verifySessionId); } //Log verbose status Login.Logger.Information("Upload chunk status " + verifySessionId + " / " + fileSizeMB + " MB"); } }
/// <summary> /// Uploads a single chunk /// </summary> /// <param name="uploadSessionId"></param> private void UploadSingleChunk(string uploadSessionId, byte [] uploadDataBuffer, int numBytes) { var urlAppendChunk = _onlineUrls.Url_AppendFileUploadChunk(_onlineSession, uploadSessionId); var uploadChunkAsMime = new MimeWriterFileUploadChunk(uploadDataBuffer, numBytes); var webRequest = this.CreateAndSendMimeLoggedInRequest(urlAppendChunk, "PUT", uploadChunkAsMime); //NOTE: This command requires a PUT not a GET var response = this.GetWebReponseLogErrors(webRequest, "upload file chunk"); using (response) { var xmlDoc = GetWebResponseAsXml(response); //Get all the workbook nodes var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var chunkUploadXml = xmlDoc.SelectSingleNode("//iwsOnline:fileUpload", nsManager); var verifySessionId = chunkUploadXml.Attributes["uploadSessionId"].Value; var fileSizeMB = chunkUploadXml.Attributes["fileSize"].Value; if (verifySessionId != uploadSessionId) { this.StatusLog.AddError("Upload sessions do not match! " + uploadSessionId + "/" + verifySessionId); } //Log verbose status this.StatusLog.AddStatus("Upload chunk status " + verifySessionId + " / " + fileSizeMB + " MB", -10); } }
/// <summary> /// Uploads a single chunk /// </summary> /// <param name="uploadSessionId"></param> private void UploadSingleChunk(string uploadSessionId, byte [] uploadDataBuffer, int numBytes) { var urlAppendChunk = _onlineUrls.Url_AppendFileUploadChunk(_onlineSession, uploadSessionId); var uploadChunkAsMime = new MimeWriterFileUploadChunk(uploadDataBuffer, numBytes); var webRequest = this.CreateAndSendMimeLoggedInRequest(urlAppendChunk, "PUT", uploadChunkAsMime); //NOTE: This command requires a PUT not a GET var response = this.GetWebReponseLogErrors(webRequest, "upload file chunk"); using(response) { var xmlDoc = GetWebResponseAsXml(response); //Get all the workbook nodes var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var chunkUploadXml = xmlDoc.SelectSingleNode("//iwsOnline:fileUpload", nsManager); var verifySessionId = chunkUploadXml.Attributes["uploadSessionId"].Value; var fileSizeMB = chunkUploadXml.Attributes["fileSize"].Value; if(verifySessionId != uploadSessionId) { this.StatusLog.AddError("Upload sessions do not match! " + uploadSessionId + "/" + verifySessionId); } //Log verbose status this.StatusLog.AddStatus("Upload chunk status " + verifySessionId + " / " + fileSizeMB + " MB", -10); } }