示例#1
0
        /// <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");
            }
        }
示例#2
0
    /// <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);
        }
    }
示例#3
0
    /// <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);
        }

    }