public TableauServerUrls(string protocol, string serverName, string siteUrlSegment, int pageSize, ServerVersion serverVersion)
{
//Cannonicalize the protocol
protocol = protocol.ToLower();
this.ServerProtocol = protocol;
this.PageSize = pageSize;
string serverNameWithProtocol = protocol + serverName;
this._serverVersion = serverVersion;
this.SiteUrlSegement = siteUrlSegment;
this.ServerName = serverName;
this.ServerUrlWithProtocol = serverNameWithProtocol;
this.UrlLogin = serverNameWithProtocol + "/api/2.0/auth/signin";
this.UrlLogout = serverNameWithProtocol + "/api/2.0/auth/signout";
this._urlListWorkbooksForUserTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/users/{{iwsUserId}}/workbooks?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlListWorkbookConnectionsTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/workbooks/{{iwsWorkbookId}}/connections";
this._urlListDatasourcesTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/datasources?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlListProjectsTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/projects?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlListGroupsTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/groups?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlListUsersTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/users?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlListUsersInGroupTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/groups/{{iwsGroupId}}/users?pageSize={{iwsPageSize}}&pageNumber={{iwsPageNumber}}";
this._urlDownloadDatasourceTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/datasources/{{iwsRepositoryId}}/content";
this._urlDownloadWorkbookTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/workbooks/{{iwsRepositoryId}}/content";
this._urlSiteInfoTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}";
this._urlInitiateUploadTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/fileUploads";
this._urlAppendUploadChunkTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/fileUploads/{{iwsUploadSession}}";
this._urlFinalizeUploadDatasourceTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/datasources?uploadSessionId={{iwsUploadSession}}&datasourceType={{iwsDatasourceType}}&overwrite=true";
this._urlFinalizeUploadWorkbookTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/workbooks?uploadSessionId={{iwsUploadSession}}&workbookType={{iwsWorkbookType}}&overwrite=true";
this._urlCreateProjectTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/projects";
this._urlDeleteWorkbookTagTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/workbooks/{{iwsWorkbookId}}/tags/{{iwsTagText}}";
this._urlDeleteDatasourceTagTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/datasources/{{iwsDatasourceId}}/tags/{{iwsTagText}}";
this._urlUpdateWorkbookTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/workbooks/{{iwsWorkbookId}}";
this._urlUpdateDatasourceTemplate = serverNameWithProtocol + "/api/2.0/sites/{{iwsSiteId}}/datasources/{{iwsDatasourceId}}";
//Any server version specific things we want to do?
switch (serverVersion)
{
case ServerVersion.server8:
throw new Exception("This app does not support v8 Server");
case ServerVersion.server9:
break;
default:
AppDiagnostics.Assert(false, "Unknown server version");
throw new Exception("Unknown server version");
}
}