public ServerCredentials(string name, string password, string site) { Name = name; Password = password; Site = new ServerSite { ContentUrl = site }; }
private async Task <ServerSite> GetSiteAsync(string site) { LogOnError = false; ServerSite serverSite = new ServerSite(); if (LogOn.Token == null) { await LogOnAsync(site); } else if (LogOn.Site.ContentUrl != site) { await SwitchSiteAsync(site); } if (LogOnError) { throw new Exception(ErrorMessage); } else { Client.DefaultRequestHeaders.Remove("X-Tableau-Auth"); Client.DefaultRequestHeaders.TryAddWithoutValidation("X-Tableau-Auth", LogOn.Token); var request = new HttpRequestMessage(HttpMethod.Get, $"3.3/sites/{site}?key=contentUrl"); try { using (var response = await Client.SendAsync(request)) { if (response.IsSuccessStatusCode) { var l = await response.Content.ReadAsAsync <Site>(); serverSite = l.SiteDetails; } else { LogOnError = true; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } request.Dispose(); } return(serverSite); }
private async Task <ServerSite> CreateSiteAsync(string site, string name) { LogOnError = false; ServerSite serverSite = new ServerSite(); if (LogOn.Token == null) { await LogOnAsync(); } if (LogOnError) { throw new Exception(ErrorMessage); } var newSite = new NewSite { SiteDetails = new ServerSite { Name = name, ContentUrl = site, AdminMode = "ContentOnly" } }; string content = ToXML(newSite, "tsRequest"); Client.DefaultRequestHeaders.Remove("X-Tableau-Auth"); Client.DefaultRequestHeaders.TryAddWithoutValidation("X-Tableau-Auth", LogOn.Token); var request = new HttpRequestMessage(HttpMethod.Post, "3.3/sites") { Content = new StringContent(content, Encoding.UTF8, "application/xml") }; try { using (var response = await Client.SendAsync(request)) { if (response.IsSuccessStatusCode) { var l = await response.Content.ReadAsAsync <NewSite>(); await SwitchSiteAsync(l.SiteDetails.ContentUrl); serverSite = l.SiteDetails; } else { var message = await response.Content.ReadAsStringAsync(); ErrorMessage = message; StatusCode = response.StatusCode.ToString(); ReasonPhrase = response.ReasonPhrase; LogOnError = true; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } request.Dispose(); return(serverSite); }