/// <summary>
    /// Downloads a single request for 1 workbook
    /// </summary>
    /// <param name="workbookId"></param>
    /// <returns></returns>
    public SiteWorkbook ExecuteRequest_SingleWorkbook(string workbookId)
    {
        //Sanity check
        if (string.IsNullOrWhiteSpace(workbookId))
        {
            _onlineSession.StatusLog.AddError("Workbook ID required to query workbooks");
        }
        //Create a web request, in including the users logged-in auth information in the request headers
        var urlQuery = _onlineUrls.Url_WorkbookInfo(_onlineSession, workbookId);

        _onlineSession.StatusLog.AddStatus("Web request: " + urlQuery, -10);
        var xmlDoc = ResourceSafe_PerformWebRequest_GetXmlDocument(urlQuery, "get workbooks list");
        //var webRequest = CreateLoggedInWebRequest(urlQuery);
        //webRequest.Method = "GET";
        //var response = GetWebReponseLogErrors(webRequest, "get workbooks list");
        //var xmlDoc = GetWebResponseAsXml(response);

        //Get all the workbook nodes
        var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline");
        var workbooks = xmlDoc.SelectNodes("//iwsOnline:workbook", nsManager);

        //Get information for each of the data sources
        foreach (XmlNode itemXml in workbooks)
        {
            try
            {
                var wb = new SiteWorkbook(itemXml);
                //There is ONLY one workbook, so return it
                return(wb);
            }
            catch
            {
                AppDiagnostics.Assert(false, "Workbook parse error");
                _onlineSession.StatusLog.AddError("Error parsing workbook: " + itemXml.InnerXml);
                return(null);
            }
        } //end: foreach

        return(null);
    }