From 610e70f01ef5cd472bb1aecad8325832cce85b52 Mon Sep 17 00:00:00 2001 From: michaelgeary Date: Mon, 14 Nov 2016 09:26:30 -0700 Subject: [PATCH] updated code to enable connections with usertoken, in addition to username/password --- Intuit.QuickBase.Core/AddField.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/AddRecord.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/AddReplaceDBPage.cs | 19 +++++++++++++------ Intuit.QuickBase.Core/AddUserToRole.cs | 12 ++++++++++-- Intuit.QuickBase.Core/ChangeRecordOwner.cs | 12 ++++++++++-- Intuit.QuickBase.Core/ChangeUserRole.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/CloneDatabase.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/CreateDatabase.cs | 13 +++++++++++-- Intuit.QuickBase.Core/CreateTable.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/DeleteDatabase.cs | 13 +++++++++++-- Intuit.QuickBase.Core/DeleteField.cs | 13 +++++++++++-- Intuit.QuickBase.Core/DeleteRecord.cs | 13 +++++++++++-- Intuit.QuickBase.Core/DoQuery.cs | 15 +++++++++++++-- Intuit.QuickBase.Core/DoQueryCount.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/DownloadFile.cs | 19 ++++++++++++++++--- Intuit.QuickBase.Core/EditRecord.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/FieldAddChoices.cs | 12 ++++++++++-- Intuit.QuickBase.Core/FieldRemoveChoices.cs | 12 ++++++++++-- Intuit.QuickBase.Core/FindDBByName.cs | 13 +++++++++++-- Intuit.QuickBase.Core/GenResultsTable.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/GetDBInfo.cs | 13 +++++++++++-- Intuit.QuickBase.Core/GetDBPage.cs | 12 ++++++++++-- Intuit.QuickBase.Core/GetDBvar.cs | 12 ++++++++++-- Intuit.QuickBase.Core/GetNumRecords.cs | 13 +++++++++++-- Intuit.QuickBase.Core/GetRecordAsHTML.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/GetRecordInfo.cs | 13 +++++++++++-- Intuit.QuickBase.Core/GetRoleInfo.cs | 12 ++++++++++-- Intuit.QuickBase.Core/GetSchema.cs | 13 +++++++++++-- Intuit.QuickBase.Core/GetUserInfo.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/GetUserRole.cs | 12 ++++++++++-- Intuit.QuickBase.Core/GrantedDBs.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/ImportFromCSV.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/ProvisionUser.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/PurgeRecords.cs | 14 ++++++++++++-- Intuit.QuickBase.Core/RemoveUserFromRole.cs | 12 ++++++++++-- Intuit.QuickBase.Core/RenameApp.cs | 13 +++++++++++-- Intuit.QuickBase.Core/RunImport.cs | 12 ++++++++++-- Intuit.QuickBase.Core/SendInvitation.cs | 20 ++++++++++++++------ Intuit.QuickBase.Core/SetDBvar.cs | 12 ++++++++++-- Intuit.QuickBase.Core/UserRoles.cs | 12 ++++++++++-- 40 files changed, 464 insertions(+), 109 deletions(-) diff --git a/Intuit.QuickBase.Core/AddField.cs b/Intuit.QuickBase.Core/AddField.cs index 9e0536d..fa62eba 100644 --- a/Intuit.QuickBase.Core/AddField.cs +++ b/Intuit.QuickBase.Core/AddField.cs @@ -37,9 +37,9 @@ public sealed class AddField : IQObject /// /// /// - public AddField(string ticket, string appToken, string accountDomain, string dbid, string label, FieldType type, Mode mode) + public AddField(string ticket, string appToken, string accountDomain, string dbid, string label, FieldType type, Mode mode, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new AddFieldPayload(label, type, mode)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new AddFieldPayload(label, type, mode), userToken); } /// @@ -51,14 +51,22 @@ public AddField(string ticket, string appToken, string accountDomain, string dbi /// Supply table-level dbid. /// /// - public AddField(string ticket, string appToken, string accountDomain, string dbid, string label, FieldType type) + /// an optional user token that can be used instead of a ticket + public AddField(string ticket, string appToken, string accountDomain, string dbid, string label, FieldType type, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new AddFieldPayload(label, type)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new AddFieldPayload(label, type), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _addFieldPayload = new ApplicationTicket(payload, ticket); + if (userToken.Length > 0) + { + _addFieldPayload = new ApplicationUserToken(payload, userToken); + } + else + { + _addFieldPayload = new ApplicationTicket(payload, ticket); + } _addFieldPayload = new ApplicationToken(_addFieldPayload, appToken); _addFieldPayload = new WrapPayload(_addFieldPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/AddRecord.cs b/Intuit.QuickBase.Core/AddRecord.cs index 981d7ef..3c52494 100644 --- a/Intuit.QuickBase.Core/AddRecord.cs +++ b/Intuit.QuickBase.Core/AddRecord.cs @@ -31,6 +31,7 @@ public class Builder private List _fields; internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } @@ -47,15 +48,17 @@ internal List Fields } } - public Builder(string ticket, string appToken, string accountDomain, string dbid, List fields) + public Builder(string ticket, string appToken, string accountDomain, string dbid, List fields, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; Fields = fields; } + internal bool Disprec { get; private set; } public Builder SetDisprec(bool val) @@ -84,7 +87,14 @@ private AddRecord(Builder builder) .SetDisprec(builder.Disprec) .SetFform(builder.Fform) .Build(); - _addRecordPayload = new ApplicationTicket(_addRecordPayload, builder.Ticket); + if (builder.UserToken.Length > 0) + { + _addRecordPayload = new ApplicationUserToken(_addRecordPayload, builder.UserToken); + } + else + { + _addRecordPayload = new ApplicationTicket(_addRecordPayload, builder.Ticket); + } _addRecordPayload = new ApplicationToken(_addRecordPayload, builder.AppToken); _addRecordPayload = new WrapPayload(_addRecordPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/AddReplaceDBPage.cs b/Intuit.QuickBase.Core/AddReplaceDBPage.cs index 8f6dda7..9946268 100644 --- a/Intuit.QuickBase.Core/AddReplaceDBPage.cs +++ b/Intuit.QuickBase.Core/AddReplaceDBPage.cs @@ -17,19 +17,26 @@ public class AddReplaceDBPage : IQObject private Payload.Payload _addReplaceDBPagePayload; private IQUri _uri; - public AddReplaceDBPage(string ticket, string appToken, string accountDomain, string dbid, string pageName, PageType pageType, string pageBody) + public AddReplaceDBPage(string ticket, string appToken, string accountDomain, string dbid, string pageName, PageType pageType, string pageBody, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new AddReplaceDBPagePayload(pageName, pageType, pageBody)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new AddReplaceDBPagePayload(pageName, pageType, pageBody), userToken); } - public AddReplaceDBPage(string ticket, string appToken, string accountDomain, string dbid, int pageId, PageType pageType, string pageBody) + public AddReplaceDBPage(string ticket, string appToken, string accountDomain, string dbid, int pageId, PageType pageType, string pageBody, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new AddReplaceDBPagePayload(pageId, pageType, pageBody)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new AddReplaceDBPagePayload(pageId, pageType, pageBody), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _addReplaceDBPagePayload = new ApplicationTicket(payload, ticket); + if (userToken.Length > 0) + { + _addReplaceDBPagePayload = new ApplicationUserToken(payload, userToken); + } + else + { + _addReplaceDBPagePayload = new ApplicationTicket(payload, ticket); + } _addReplaceDBPagePayload = new ApplicationToken(_addReplaceDBPagePayload, appToken); _addReplaceDBPagePayload = new WrapPayload(_addReplaceDBPagePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/AddUserToRole.cs b/Intuit.QuickBase.Core/AddUserToRole.cs index 98b71f3..1a185ce 100644 --- a/Intuit.QuickBase.Core/AddUserToRole.cs +++ b/Intuit.QuickBase.Core/AddUserToRole.cs @@ -17,10 +17,18 @@ public class AddUserToRole : IQObject private readonly Payload.Payload _addUserToRolePayload; private readonly IQUri _uri; - public AddUserToRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int roleId) + public AddUserToRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int roleId, string userToken = "") { _addUserToRolePayload = new AddUserToRolePayload(userId, roleId); - _addUserToRolePayload = new ApplicationTicket(_addUserToRolePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _addUserToRolePayload = new ApplicationUserToken(_addUserToRolePayload, userToken); + } + else + { + _addUserToRolePayload = new ApplicationTicket(_addUserToRolePayload, ticket); + } _addUserToRolePayload = new ApplicationToken(_addUserToRolePayload, appToken); _addUserToRolePayload = new WrapPayload(_addUserToRolePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/ChangeRecordOwner.cs b/Intuit.QuickBase.Core/ChangeRecordOwner.cs index d7b4015..1c82cad 100644 --- a/Intuit.QuickBase.Core/ChangeRecordOwner.cs +++ b/Intuit.QuickBase.Core/ChangeRecordOwner.cs @@ -17,10 +17,18 @@ public class ChangeRecordOwner : IQObject private readonly Payload.Payload _changeRecordOwnerPayload; private readonly IQUri _uri; - public ChangeRecordOwner(string ticket, string appToken, string accountDomain, string dbid, int rid, string newOwner) + public ChangeRecordOwner(string ticket, string appToken, string accountDomain, string dbid, int rid, string newOwner, string userToken = "") { _changeRecordOwnerPayload = new ChangeRecordOwnerPayload(rid, newOwner); - _changeRecordOwnerPayload = new ApplicationTicket(_changeRecordOwnerPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _changeRecordOwnerPayload = new ApplicationUserToken(_changeRecordOwnerPayload, userToken); + } + else + { + _changeRecordOwnerPayload = new ApplicationTicket(_changeRecordOwnerPayload, ticket); + } _changeRecordOwnerPayload = new ApplicationToken(_changeRecordOwnerPayload, appToken); _changeRecordOwnerPayload = new WrapPayload(_changeRecordOwnerPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/ChangeUserRole.cs b/Intuit.QuickBase.Core/ChangeUserRole.cs index 9a07c44..c9e2bd9 100644 --- a/Intuit.QuickBase.Core/ChangeUserRole.cs +++ b/Intuit.QuickBase.Core/ChangeUserRole.cs @@ -17,20 +17,28 @@ public class ChangeUserRole : IQObject private Payload.Payload _changeUserRolePayload; private IQUri _uri; - public ChangeUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int currentRoleId, int newRoldId) + public ChangeUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int currentRoleId, int newRoldId, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new ChangeUserRolePayload(userId, currentRoleId, newRoldId)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new ChangeUserRolePayload(userId, currentRoleId, newRoldId), userToken); } - public ChangeUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int currentRoleId) + public ChangeUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int currentRoleId, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new ChangeUserRolePayload(userId, currentRoleId)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new ChangeUserRolePayload(userId, currentRoleId), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _changeUserRolePayload = new ApplicationTicket(payload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _changeUserRolePayload = new ApplicationUserToken(payload, userToken); + } + else + { + _changeUserRolePayload = new ApplicationTicket(payload, ticket); + } _changeUserRolePayload = new ApplicationToken(_changeUserRolePayload, appToken); _changeUserRolePayload = new WrapPayload(_changeUserRolePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/CloneDatabase.cs b/Intuit.QuickBase.Core/CloneDatabase.cs index 361940d..227dc1f 100644 --- a/Intuit.QuickBase.Core/CloneDatabase.cs +++ b/Intuit.QuickBase.Core/CloneDatabase.cs @@ -34,6 +34,7 @@ public class Builder private string _newDBDesc; internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } @@ -65,9 +66,10 @@ internal string NewDBDesc } } - public Builder(string ticket, string appToken, string accountDomain, string dbid, string newDBName, string newDBDesc) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string newDBName, string newDBDesc, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -103,7 +105,15 @@ private CloneDatabase(Builder builder) .SetKeepData(builder.KeepData) .SetExcludeFiles(builder.ExcludeFiles) .Build(); - _cloneDatabasePayload = new ApplicationTicket(_cloneDatabasePayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _cloneDatabasePayload = new ApplicationUserToken(_cloneDatabasePayload, builder.UserToken); + } + else + { + _cloneDatabasePayload = new ApplicationTicket(_cloneDatabasePayload, builder.Ticket); + } _cloneDatabasePayload = new ApplicationToken(_cloneDatabasePayload, builder.AppToken); _cloneDatabasePayload = new WrapPayload(_cloneDatabasePayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/CreateDatabase.cs b/Intuit.QuickBase.Core/CreateDatabase.cs index 97028a7..046a812 100644 --- a/Intuit.QuickBase.Core/CreateDatabase.cs +++ b/Intuit.QuickBase.Core/CreateDatabase.cs @@ -46,10 +46,19 @@ public class CreateDatabase : IQObject /// Supply a new application name. /// Supply an application description. /// Supply "true" to create a new token, "false" otherwise. - public CreateDatabase(string ticket, string accountDomain, string dbName, string dbDesc, bool createAppToken) + /// a user token that can be used instead of a ticket + public CreateDatabase(string ticket, string accountDomain, string dbName, string dbDesc, bool createAppToken, string userToken = "") { _createDatabasePayload = new CreateDatabasePayload(dbName, dbDesc, createAppToken); - _createDatabasePayload = new ApplicationTicket(_createDatabasePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _createDatabasePayload = new ApplicationUserToken(_createDatabasePayload, userToken); + } + else + { + _createDatabasePayload = new ApplicationTicket(_createDatabasePayload, ticket); + } _createDatabasePayload = new WrapPayload(_createDatabasePayload); _uri = new QUriMain(accountDomain); } diff --git a/Intuit.QuickBase.Core/CreateTable.cs b/Intuit.QuickBase.Core/CreateTable.cs index a6f2ccd..363a10e 100644 --- a/Intuit.QuickBase.Core/CreateTable.cs +++ b/Intuit.QuickBase.Core/CreateTable.cs @@ -30,13 +30,15 @@ public class CreateTable : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } - public Builder(string ticket, string appToken, string accountDomain, string dbid) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -74,7 +76,15 @@ private CreateTable(Builder builder) .SetTName(builder.TName) .SetPNoun(builder.PNoun) .Build(); - _createTablePayload = new ApplicationTicket(_createTablePayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _createTablePayload = new ApplicationUserToken(_createTablePayload, builder.UserToken); + } + else + { + _createTablePayload = new ApplicationTicket(_createTablePayload, builder.Ticket); + } _createTablePayload = new ApplicationToken(_createTablePayload, builder.AppToken); _createTablePayload = new WrapPayload(_createTablePayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/DeleteDatabase.cs b/Intuit.QuickBase.Core/DeleteDatabase.cs index b9a39f1..2aa9db8 100644 --- a/Intuit.QuickBase.Core/DeleteDatabase.cs +++ b/Intuit.QuickBase.Core/DeleteDatabase.cs @@ -30,10 +30,19 @@ public class DeleteDatabase : IQObject /// Supply application token that is assigned to your QuickBase Application. See QuickBase Online help to obtain an application token. /// /// Supply application-level or table-level dbid. - public DeleteDatabase(string ticket, string appToken, string accountDomain, string dbid) + /// optional user token that can be used instead of a ticket + public DeleteDatabase(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _deleteDatabasePayload = new DeleteDatabasePayload(); - _deleteDatabasePayload = new ApplicationTicket(_deleteDatabasePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _deleteDatabasePayload = new ApplicationUserToken(_deleteDatabasePayload, userToken); + } + else + { + _deleteDatabasePayload = new ApplicationTicket(_deleteDatabasePayload, ticket); + } _deleteDatabasePayload = new ApplicationToken(_deleteDatabasePayload, appToken); _deleteDatabasePayload = new WrapPayload(_deleteDatabasePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/DeleteField.cs b/Intuit.QuickBase.Core/DeleteField.cs index 7723585..96d615d 100644 --- a/Intuit.QuickBase.Core/DeleteField.cs +++ b/Intuit.QuickBase.Core/DeleteField.cs @@ -33,10 +33,19 @@ public class DeleteField : IQObject /// /// Supply table-level dbid. /// Supply a column object. - public DeleteField(string ticket, string appToken, string accountDomain, string dbid, int fid) + /// optional user token that can be used instead of a ticket + public DeleteField(string ticket, string appToken, string accountDomain, string dbid, int fid, string userToken = "") { _deleteFieldPayload = new DeleteFieldPayload(fid); - _deleteFieldPayload = new ApplicationTicket(_deleteFieldPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _deleteFieldPayload = new ApplicationUserToken(_deleteFieldPayload, userToken); + } + else + { + _deleteFieldPayload = new ApplicationTicket(_deleteFieldPayload, ticket); + } _deleteFieldPayload = new ApplicationToken(_deleteFieldPayload, appToken); _deleteFieldPayload = new WrapPayload(_deleteFieldPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/DeleteRecord.cs b/Intuit.QuickBase.Core/DeleteRecord.cs index 01945ea..79f5f59 100644 --- a/Intuit.QuickBase.Core/DeleteRecord.cs +++ b/Intuit.QuickBase.Core/DeleteRecord.cs @@ -30,10 +30,19 @@ public class DeleteRecord : IQObject /// /// Supply table-level dbid. /// Supply a record object. - public DeleteRecord(string ticket, string appToken, string accountDomain, string dbid, int rid) + /// optional user token that can be used instead of a ticket + public DeleteRecord(string ticket, string appToken, string accountDomain, string dbid, int rid, string userToken = "") { _deleteRecordPayload = new DeleteRecordPayload(rid); - _deleteRecordPayload = new ApplicationTicket(_deleteRecordPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _deleteRecordPayload = new ApplicationUserToken(_deleteRecordPayload, userToken); + } + else + { + _deleteRecordPayload = new ApplicationTicket(_deleteRecordPayload, ticket); + } _deleteRecordPayload = new ApplicationToken(_deleteRecordPayload, appToken); _deleteRecordPayload = new WrapPayload(_deleteRecordPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/DoQuery.cs b/Intuit.QuickBase.Core/DoQuery.cs index 109b620..1716f71 100644 --- a/Intuit.QuickBase.Core/DoQuery.cs +++ b/Intuit.QuickBase.Core/DoQuery.cs @@ -29,18 +29,21 @@ public class DoQuery : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } - public Builder(string ticket, string appToken, string accountDomain, string dbid) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; } + internal string Query { get; private set; } public Builder SetQuery(string val) @@ -125,7 +128,15 @@ private DoQuery(Builder builder) .SetFmt(builder.Fmt) .SetOptions(builder.Options) .Build(); - _doQueryPayload = new ApplicationTicket(_doQueryPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _doQueryPayload = new ApplicationUserToken(_doQueryPayload, builder.UserToken); + } + else + { + _doQueryPayload = new ApplicationTicket(_doQueryPayload, builder.Ticket); + } _doQueryPayload = new ApplicationToken(_doQueryPayload, builder.AppToken); _doQueryPayload = new WrapPayload(_doQueryPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/DoQueryCount.cs b/Intuit.QuickBase.Core/DoQueryCount.cs index f1395ca..0ba965a 100644 --- a/Intuit.QuickBase.Core/DoQueryCount.cs +++ b/Intuit.QuickBase.Core/DoQueryCount.cs @@ -21,13 +21,15 @@ public class DoQueryCount : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } - public Builder(string ticket, string appToken, string accountDomain, string dbid) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -75,7 +77,15 @@ private DoQueryCount(Builder builder) .SetQid(builder.Qid) .SetQName(builder.QName) .Build(); - _doQueryCountPayload = new ApplicationTicket(_doQueryCountPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _doQueryCountPayload = new ApplicationUserToken(_doQueryCountPayload, builder.UserToken); + } + else + { + _doQueryCountPayload = new ApplicationTicket(_doQueryCountPayload, builder.Ticket); + } _doQueryCountPayload = new ApplicationToken(_doQueryCountPayload, builder.AppToken); _doQueryCountPayload = new WrapPayload(_doQueryCountPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/DownloadFile.cs b/Intuit.QuickBase.Core/DownloadFile.cs index e8b710e..a9c8190 100644 --- a/Intuit.QuickBase.Core/DownloadFile.cs +++ b/Intuit.QuickBase.Core/DownloadFile.cs @@ -12,6 +12,7 @@ namespace Intuit.QuickBase.Core public class DownloadFile { private string _ticket; + private string _userToken; private string _accountDomain; private string _path; private string _file; @@ -20,14 +21,15 @@ public class DownloadFile private int _fieldId; private int _versionId; - public DownloadFile(string ticket, string accountDomain, string path, string file, string tableId, int recordId, int fieldId) - : this(ticket, accountDomain, path, file, tableId, recordId, fieldId, 0) + public DownloadFile(string ticket, string accountDomain, string path, string file, string tableId, int recordId, int fieldId, string userToken = "") + : this(ticket, accountDomain, path, file, tableId, recordId, fieldId, 0, userToken) { } - public DownloadFile(string ticket, string accountDomain, string path, string file, string tableId, int recordId, int fieldId, int versionId) + public DownloadFile(string ticket, string accountDomain, string path, string file, string tableId, int recordId, int fieldId, int versionId, string userToken = "") { Ticket = ticket; + UserToken = userToken; AccountDomain = accountDomain; Path = path; File = file; @@ -48,6 +50,17 @@ public string Ticket } } + public string UserToken + { + get { return _userToken; } + set + { + if (value == null) throw new ArgumentNullException("usertoken"); + if (value.Trim() == String.Empty) throw new ArgumentException("usertoken"); + _userToken = value; + } + } + public string AccountDomain { get { return _accountDomain; } diff --git a/Intuit.QuickBase.Core/EditRecord.cs b/Intuit.QuickBase.Core/EditRecord.cs index e8e5499..c9634a0 100644 --- a/Intuit.QuickBase.Core/EditRecord.cs +++ b/Intuit.QuickBase.Core/EditRecord.cs @@ -31,6 +31,7 @@ public class Builder private int _rid; internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } @@ -59,9 +60,10 @@ internal List Fields } } - public Builder(string ticket, string appToken, string accountDomain, string dbid, int rid, List fields) + public Builder(string ticket, string appToken, string accountDomain, string dbid, int rid, List fields, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -106,7 +108,15 @@ private EditRecord(Builder builder) .SetDisprec(builder.Disprec) .SetFform(builder.Fform) .Build(); - _editRecordPayload = new ApplicationTicket(_editRecordPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _editRecordPayload = new ApplicationUserToken(_editRecordPayload, builder.UserToken); + } + else + { + _editRecordPayload = new ApplicationTicket(_editRecordPayload, builder.Ticket); + } _editRecordPayload = new ApplicationToken(_editRecordPayload, builder.AppToken); _editRecordPayload = new WrapPayload(_editRecordPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/FieldAddChoices.cs b/Intuit.QuickBase.Core/FieldAddChoices.cs index 5ad7a78..aa884b4 100644 --- a/Intuit.QuickBase.Core/FieldAddChoices.cs +++ b/Intuit.QuickBase.Core/FieldAddChoices.cs @@ -18,10 +18,18 @@ public class FieldAddChoices : IQObject private readonly Payload.Payload _fieldAddChoicesPayload; private readonly IQUri _uri; - public FieldAddChoices(string ticket, string appToken, string accountDomain, string dbid, int fid, List choices) + public FieldAddChoices(string ticket, string appToken, string accountDomain, string dbid, int fid, List choices, string userToken = "") { _fieldAddChoicesPayload = new FieldChoicesPayload(fid, choices); - _fieldAddChoicesPayload = new ApplicationTicket(_fieldAddChoicesPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _fieldAddChoicesPayload = new ApplicationUserToken(_fieldAddChoicesPayload, userToken); + } + else + { + _fieldAddChoicesPayload = new ApplicationTicket(_fieldAddChoicesPayload, ticket); + } _fieldAddChoicesPayload = new ApplicationToken(_fieldAddChoicesPayload, appToken); _fieldAddChoicesPayload = new WrapPayload(_fieldAddChoicesPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/FieldRemoveChoices.cs b/Intuit.QuickBase.Core/FieldRemoveChoices.cs index 7a0ab65..17cf340 100644 --- a/Intuit.QuickBase.Core/FieldRemoveChoices.cs +++ b/Intuit.QuickBase.Core/FieldRemoveChoices.cs @@ -18,10 +18,18 @@ public class FieldRemoveChoices : IQObject private readonly Payload.Payload _fieldAddChoicesPayload; private readonly IQUri _uri; - public FieldRemoveChoices(string ticket, string appToken, string accountDomain, string dbid, int fid, List choices) + public FieldRemoveChoices(string ticket, string appToken, string accountDomain, string dbid, int fid, List choices, string userToken = "") { _fieldAddChoicesPayload = new FieldChoicesPayload(fid, choices); - _fieldAddChoicesPayload = new ApplicationTicket(_fieldAddChoicesPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _fieldAddChoicesPayload = new ApplicationUserToken(_fieldAddChoicesPayload, userToken); + } + else + { + _fieldAddChoicesPayload = new ApplicationTicket(_fieldAddChoicesPayload, ticket); + } _fieldAddChoicesPayload = new ApplicationToken(_fieldAddChoicesPayload, appToken); _fieldAddChoicesPayload = new WrapPayload(_fieldAddChoicesPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/FindDBByName.cs b/Intuit.QuickBase.Core/FindDBByName.cs index bb2266f..a64f66e 100644 --- a/Intuit.QuickBase.Core/FindDBByName.cs +++ b/Intuit.QuickBase.Core/FindDBByName.cs @@ -28,10 +28,19 @@ public class FindDbByName : IQObject /// Supply auth ticket for application access. See com.intuit.quickbase.API_Authenticate class to obtain a ticket. /// /// Supply application name to search for. - public FindDbByName(string ticket, string accountDomain, string dbName) + /// option user token that can be used instead of ticket + public FindDbByName(string ticket, string accountDomain, string dbName, string userToken = "") { _findDbByNamePayload = new FindDbByNamePayload(dbName); - _findDbByNamePayload = new ApplicationTicket(_findDbByNamePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _findDbByNamePayload = new ApplicationUserToken(_findDbByNamePayload, userToken); + } + else + { + _findDbByNamePayload = new ApplicationTicket(_findDbByNamePayload, ticket); + } _findDbByNamePayload = new WrapPayload(_findDbByNamePayload); _uri = new QUriMain(accountDomain); } diff --git a/Intuit.QuickBase.Core/GenResultsTable.cs b/Intuit.QuickBase.Core/GenResultsTable.cs index a567ffa..2c46965 100644 --- a/Intuit.QuickBase.Core/GenResultsTable.cs +++ b/Intuit.QuickBase.Core/GenResultsTable.cs @@ -21,13 +21,15 @@ public class GenResultsTable : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } - public Builder(string ticket, string appToken, string accountDomain, string dbid) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -117,7 +119,15 @@ private GenResultsTable(Builder builder) .SetFmt(builder.Fmt) .SetOptions(builder.Options) .Build(); - _doQueryPayload = new ApplicationTicket(_doQueryPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _doQueryPayload = new ApplicationUserToken(_doQueryPayload, builder.UserToken); + } + else + { + _doQueryPayload = new ApplicationTicket(_doQueryPayload, builder.Ticket); + } _doQueryPayload = new ApplicationToken(_doQueryPayload, builder.AppToken); _doQueryPayload = new WrapPayload(_doQueryPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/GetDBInfo.cs b/Intuit.QuickBase.Core/GetDBInfo.cs index 43a9895..0ebffbc 100644 --- a/Intuit.QuickBase.Core/GetDBInfo.cs +++ b/Intuit.QuickBase.Core/GetDBInfo.cs @@ -30,10 +30,19 @@ public class GetDbInfo : IQObject /// Supply application token that is assigned to your QuickBase Application. See QuickBase Online help to obtain an application token. /// /// Supply application-level or table-level dbid. - public GetDbInfo(string ticket, string appToken, string accountDomain, string dbid) + /// option user token that can be used instead of a ticket + public GetDbInfo(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _getDbInfoPayload = new GetDbInfoPayload(); - _getDbInfoPayload = new ApplicationTicket(_getDbInfoPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getDbInfoPayload = new ApplicationUserToken(_getDbInfoPayload, userToken); + } + else + { + _getDbInfoPayload = new ApplicationTicket(_getDbInfoPayload, ticket); + } _getDbInfoPayload = new ApplicationToken(_getDbInfoPayload, appToken); _getDbInfoPayload = new WrapPayload(_getDbInfoPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetDBPage.cs b/Intuit.QuickBase.Core/GetDBPage.cs index 76b929d..4e527b5 100644 --- a/Intuit.QuickBase.Core/GetDBPage.cs +++ b/Intuit.QuickBase.Core/GetDBPage.cs @@ -17,10 +17,18 @@ public class GetDBPage : IQObject private readonly Payload.Payload _getDbPagePayload; private readonly IQUri _uri; - public GetDBPage(string ticket, string appToken, string accountDomain, string dbid, int pageId) + public GetDBPage(string ticket, string appToken, string accountDomain, string dbid, int pageId, string userToken = "") { _getDbPagePayload = new GetDBPagePayload(pageId); - _getDbPagePayload = new ApplicationTicket(_getDbPagePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getDbPagePayload = new ApplicationUserToken(_getDbPagePayload, userToken); + } + else + { + _getDbPagePayload = new ApplicationTicket(_getDbPagePayload, ticket); + } _getDbPagePayload = new ApplicationToken(_getDbPagePayload, appToken); _getDbPagePayload = new WrapPayload(_getDbPagePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetDBvar.cs b/Intuit.QuickBase.Core/GetDBvar.cs index f9623ac..7992da1 100644 --- a/Intuit.QuickBase.Core/GetDBvar.cs +++ b/Intuit.QuickBase.Core/GetDBvar.cs @@ -17,10 +17,18 @@ public class GetDBvar : IQObject private readonly Payload.Payload _getDBvarPayload; private readonly IQUri _uri; - public GetDBvar(string ticket, string appToken, string accountDomain, string dbid, string varName) + public GetDBvar(string ticket, string appToken, string accountDomain, string dbid, string varName, string userToken = "") { _getDBvarPayload = new GetDBvarPayload(varName); - _getDBvarPayload = new ApplicationTicket(_getDBvarPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getDBvarPayload = new ApplicationUserToken(_getDBvarPayload, userToken); + } + else + { + _getDBvarPayload = new ApplicationTicket(_getDBvarPayload, ticket); + } _getDBvarPayload = new ApplicationToken(_getDBvarPayload, appToken); _getDBvarPayload = new WrapPayload(_getDBvarPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetNumRecords.cs b/Intuit.QuickBase.Core/GetNumRecords.cs index 7272150..07e96b9 100644 --- a/Intuit.QuickBase.Core/GetNumRecords.cs +++ b/Intuit.QuickBase.Core/GetNumRecords.cs @@ -28,10 +28,19 @@ public class GetNumRecords : IQObject /// Supply application token that is assigned to your QuickBase Application. See QuickBase Online help to obtain an application token. /// /// Supply table-level dbid. - public GetNumRecords(string ticket, string appToken, string accountDomain, string dbid) + /// option user token the can be used instead of a ticket + public GetNumRecords(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _getNumRecordsPayload = new GetNumRecordsPayload(); - _getNumRecordsPayload = new ApplicationTicket(_getNumRecordsPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getNumRecordsPayload = new ApplicationUserToken(_getNumRecordsPayload, userToken); + } + else + { + _getNumRecordsPayload = new ApplicationTicket(_getNumRecordsPayload, ticket); + } _getNumRecordsPayload = new ApplicationToken(_getNumRecordsPayload, appToken); _getNumRecordsPayload = new WrapPayload(_getNumRecordsPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetRecordAsHTML.cs b/Intuit.QuickBase.Core/GetRecordAsHTML.cs index 6275eec..d57f0c6 100644 --- a/Intuit.QuickBase.Core/GetRecordAsHTML.cs +++ b/Intuit.QuickBase.Core/GetRecordAsHTML.cs @@ -17,19 +17,27 @@ public class GetRecordAsHtml : IQObject private Payload.Payload _getRecordAsHtmlPayload; private IQUri _uri; - public GetRecordAsHtml(string ticket, string appToken, string accountDomain, string dbid, int rid, bool jht) + public GetRecordAsHtml(string ticket, string appToken, string accountDomain, string dbid, int rid, bool jht, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new GetRecordAsHtmlPayload(rid, jht)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new GetRecordAsHtmlPayload(rid, jht), userToken); } - public GetRecordAsHtml(string ticket, string appToken, string accountDomain, string dbid, int rid) + public GetRecordAsHtml(string ticket, string appToken, string accountDomain, string dbid, int rid, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new GetRecordAsHtmlPayload(rid)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new GetRecordAsHtmlPayload(rid), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _getRecordAsHtmlPayload = new ApplicationTicket(payload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getRecordAsHtmlPayload = new ApplicationUserToken(payload, userToken); + } + else + { + _getRecordAsHtmlPayload = new ApplicationTicket(payload, ticket); + } _getRecordAsHtmlPayload = new ApplicationToken(_getRecordAsHtmlPayload, appToken); _getRecordAsHtmlPayload = new WrapPayload(_getRecordAsHtmlPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetRecordInfo.cs b/Intuit.QuickBase.Core/GetRecordInfo.cs index 7cf528f..f6be13d 100644 --- a/Intuit.QuickBase.Core/GetRecordInfo.cs +++ b/Intuit.QuickBase.Core/GetRecordInfo.cs @@ -30,10 +30,19 @@ public class GetRecordInfo : IQObject /// /// Supply table-level dbid. /// Supply a record object. - public GetRecordInfo(string ticket, string appToken, string accountDomain, string dbid, int rid) + /// option user token that can be used instead of a ticket + public GetRecordInfo(string ticket, string appToken, string accountDomain, string dbid, int rid, string userToken = "") { _getRecordInfoPayload = new GetRecordInfoPayload(rid); - _getRecordInfoPayload = new ApplicationTicket(_getRecordInfoPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getRecordInfoPayload = new ApplicationUserToken(_getRecordInfoPayload, userToken); + } + else + { + _getRecordInfoPayload = new ApplicationTicket(_getRecordInfoPayload, ticket); + } _getRecordInfoPayload = new ApplicationToken(_getRecordInfoPayload, appToken); _getRecordInfoPayload = new WrapPayload(_getRecordInfoPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetRoleInfo.cs b/Intuit.QuickBase.Core/GetRoleInfo.cs index 29615b5..0d02bf8 100644 --- a/Intuit.QuickBase.Core/GetRoleInfo.cs +++ b/Intuit.QuickBase.Core/GetRoleInfo.cs @@ -17,10 +17,18 @@ public class GetRoleInfo : IQObject private readonly Payload.Payload _getRoleInfoPayload; private readonly IQUri _uri; - public GetRoleInfo(string ticket, string appToken, string accountDomain, string dbid) + public GetRoleInfo(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _getRoleInfoPayload = new GetRoleInfoPayload(); - _getRoleInfoPayload = new ApplicationTicket(_getRoleInfoPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getRoleInfoPayload = new ApplicationUserToken(_getRoleInfoPayload, userToken); + } + else + { + _getRoleInfoPayload = new ApplicationTicket(_getRoleInfoPayload, ticket); + } _getRoleInfoPayload = new ApplicationToken(_getRoleInfoPayload, appToken); _getRoleInfoPayload = new WrapPayload(_getRoleInfoPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetSchema.cs b/Intuit.QuickBase.Core/GetSchema.cs index 9b7c321..0c335c1 100644 --- a/Intuit.QuickBase.Core/GetSchema.cs +++ b/Intuit.QuickBase.Core/GetSchema.cs @@ -30,10 +30,19 @@ public class GetSchema : IQObject /// Supply application token that is assigned to your QuickBase Application. See QuickBase Online help to obtain an application token. /// /// Supply application-level or table-level dbid. - public GetSchema(string ticket, string appToken, string accountDomain, string dbid) + /// optional user token that can be used instead of a ticket + public GetSchema(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _getRecordInfoPayload = new GetSchemaPayload(); - _getRecordInfoPayload = new ApplicationTicket(_getRecordInfoPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getRecordInfoPayload = new ApplicationUserToken(_getRecordInfoPayload, userToken); + } + else + { + _getRecordInfoPayload = new ApplicationTicket(_getRecordInfoPayload, ticket); + } _getRecordInfoPayload = new ApplicationToken(_getRecordInfoPayload, appToken); _getRecordInfoPayload = new WrapPayload(_getRecordInfoPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GetUserInfo.cs b/Intuit.QuickBase.Core/GetUserInfo.cs index f2e6dac..e1ef83e 100644 --- a/Intuit.QuickBase.Core/GetUserInfo.cs +++ b/Intuit.QuickBase.Core/GetUserInfo.cs @@ -17,19 +17,27 @@ public class GetUserInfo : IQObject private Payload.Payload _getUserInfoPayload; private IQUri _uri; - public GetUserInfo(string ticket, string appToken, string accountDomain, string email) + public GetUserInfo(string ticket, string appToken, string accountDomain, string email, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, new GetUserInfoPayload(email)); + CommonConstruction(ticket, appToken, accountDomain, new GetUserInfoPayload(email), userToken); } - public GetUserInfo(string ticket, string appToken, string accountDomain) + public GetUserInfo(string ticket, string appToken, string accountDomain, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, new GetUserInfoPayload()); + CommonConstruction(ticket, appToken, accountDomain, new GetUserInfoPayload(), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, Payload.Payload payload, string userToken = "") { - _getUserInfoPayload = new ApplicationTicket(payload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getUserInfoPayload = new ApplicationUserToken(payload, userToken); + } + else + { + _getUserInfoPayload = new ApplicationTicket(payload, ticket); + } _getUserInfoPayload = new ApplicationToken(_getUserInfoPayload, appToken); _getUserInfoPayload = new WrapPayload(_getUserInfoPayload); _uri = new QUriMain(accountDomain); diff --git a/Intuit.QuickBase.Core/GetUserRole.cs b/Intuit.QuickBase.Core/GetUserRole.cs index 233eff6..4edede0 100644 --- a/Intuit.QuickBase.Core/GetUserRole.cs +++ b/Intuit.QuickBase.Core/GetUserRole.cs @@ -17,10 +17,18 @@ public class GetUserRole : IQObject private readonly Payload.Payload _getUserRolePayload; private readonly IQUri _uri; - public GetUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId) + public GetUserRole(string ticket, string appToken, string accountDomain, string dbid, string userId, string userToken = "") { _getUserRolePayload = new GetUserRolePayload(userId); - _getUserRolePayload = new ApplicationTicket(_getUserRolePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _getUserRolePayload = new ApplicationUserToken(_getUserRolePayload, userToken); + } + else + { + _getUserRolePayload = new ApplicationTicket(_getUserRolePayload, ticket); + } _getUserRolePayload = new ApplicationToken(_getUserRolePayload, appToken); _getUserRolePayload = new WrapPayload(_getUserRolePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/GrantedDBs.cs b/Intuit.QuickBase.Core/GrantedDBs.cs index 98abbc2..c80547b 100644 --- a/Intuit.QuickBase.Core/GrantedDBs.cs +++ b/Intuit.QuickBase.Core/GrantedDBs.cs @@ -20,12 +20,14 @@ public class GrantedDBs : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } - public Builder(string ticket, string appToken, string accountDomain) + public Builder(string ticket, string appToken, string accountDomain, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; } @@ -67,7 +69,15 @@ private GrantedDBs(Builder builder) .SetWithEmbeddedTables(builder.WithEmbeddedTables) .SetAdminOnly(builder.AdminOnly) .Build(); - _grantDBsPayload = new ApplicationTicket(_grantDBsPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _grantDBsPayload = new ApplicationUserToken(_grantDBsPayload, builder.UserToken); + } + else + { + _grantDBsPayload = new ApplicationTicket(_grantDBsPayload, builder.Ticket); + } _grantDBsPayload = new ApplicationToken(_grantDBsPayload, builder.AppToken); _grantDBsPayload = new WrapPayload(_grantDBsPayload); _uri = new QUriMain(builder.AccountDomain); diff --git a/Intuit.QuickBase.Core/ImportFromCSV.cs b/Intuit.QuickBase.Core/ImportFromCSV.cs index d499554..8d4d466 100644 --- a/Intuit.QuickBase.Core/ImportFromCSV.cs +++ b/Intuit.QuickBase.Core/ImportFromCSV.cs @@ -23,6 +23,7 @@ public class Builder private string _recordsCsv; internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } @@ -40,9 +41,10 @@ internal string RecordsCsv } } - public Builder(string ticket, string appToken, string accountDomain, string dbid, string recordsCsv) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string recordsCsv, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -79,7 +81,15 @@ private ImportFromCSV(Builder builder) .SetCList(builder.CList) .SetSkipFirst(builder.SkipFirst) .Build(); - _importFromCSVPayload = new ApplicationTicket(_importFromCSVPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _importFromCSVPayload = new ApplicationUserToken(_importFromCSVPayload, builder.UserToken); + } + else + { + _importFromCSVPayload = new ApplicationTicket(_importFromCSVPayload, builder.Ticket); + } _importFromCSVPayload = new ApplicationToken(_importFromCSVPayload, builder.AppToken); _importFromCSVPayload = new WrapPayload(_importFromCSVPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/ProvisionUser.cs b/Intuit.QuickBase.Core/ProvisionUser.cs index 384925a..e7946bd 100644 --- a/Intuit.QuickBase.Core/ProvisionUser.cs +++ b/Intuit.QuickBase.Core/ProvisionUser.cs @@ -17,19 +17,27 @@ public class ProvisionUser : IQObject private Payload.Payload _provisionUserPayload; private IQUri _uri; - public ProvisionUser(string ticket, string appToken, string accountDomain, string dbid, string email, int roleId, string firstName, string lastName) + public ProvisionUser(string ticket, string appToken, string accountDomain, string dbid, string email, int roleId, string firstName, string lastName, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new ProvisionUserPayload(email, roleId, firstName, lastName)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new ProvisionUserPayload(email, roleId, firstName, lastName), userToken); } - public ProvisionUser(string ticket, string appToken, string accountDomain, string dbid, string email, string firstName, string lastName) + public ProvisionUser(string ticket, string appToken, string accountDomain, string dbid, string email, string firstName, string lastName, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new ProvisionUserPayload(email, firstName, lastName)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new ProvisionUserPayload(email, firstName, lastName), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _provisionUserPayload = new ApplicationTicket(payload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _provisionUserPayload = new ApplicationUserToken(payload, userToken); + } + else + { + _provisionUserPayload = new ApplicationTicket(payload, ticket); + } _provisionUserPayload = new ApplicationToken(_provisionUserPayload, appToken); _provisionUserPayload = new WrapPayload(_provisionUserPayload); diff --git a/Intuit.QuickBase.Core/PurgeRecords.cs b/Intuit.QuickBase.Core/PurgeRecords.cs index 2d8f892..30754aa 100644 --- a/Intuit.QuickBase.Core/PurgeRecords.cs +++ b/Intuit.QuickBase.Core/PurgeRecords.cs @@ -33,13 +33,15 @@ public class PurgeRecords : IQObject public class Builder { internal string Ticket { get; set; } + internal string UserToken { get; set; } internal string AppToken { get; set; } internal string AccountDomain { get; set; } internal string Dbid { get; set; } - public Builder(string ticket, string appToken, string accountDomain, string dbid) + public Builder(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { Ticket = ticket; + UserToken = userToken; AppToken = appToken; AccountDomain = accountDomain; Dbid = dbid; @@ -87,7 +89,15 @@ private PurgeRecords(Builder builder) .SetQid(builder.Qid) .SetQName(builder.QName) .Build(); - _purgeRecordsPayload = new ApplicationTicket(_purgeRecordsPayload, builder.Ticket); + //If a user token is provided, use it instead of a ticket + if (builder.UserToken.Length > 0) + { + _purgeRecordsPayload = new ApplicationUserToken(_purgeRecordsPayload, builder.UserToken); + } + else + { + _purgeRecordsPayload = new ApplicationTicket(_purgeRecordsPayload, builder.Ticket); + } _purgeRecordsPayload = new ApplicationToken(_purgeRecordsPayload, builder.AppToken); _purgeRecordsPayload = new WrapPayload(_purgeRecordsPayload); _uri = new QUriDbid(builder.AccountDomain, builder.Dbid); diff --git a/Intuit.QuickBase.Core/RemoveUserFromRole.cs b/Intuit.QuickBase.Core/RemoveUserFromRole.cs index 68aaa58..1796dbf 100644 --- a/Intuit.QuickBase.Core/RemoveUserFromRole.cs +++ b/Intuit.QuickBase.Core/RemoveUserFromRole.cs @@ -17,10 +17,18 @@ public class RemoveUserFromRole : IQObject private readonly Payload.Payload _removeUserFromRolePayload; private readonly IQUri _uri; - public RemoveUserFromRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int roleId) + public RemoveUserFromRole(string ticket, string appToken, string accountDomain, string dbid, string userId, int roleId, string userToken = "") { _removeUserFromRolePayload = new RemoveUserFromRolePayload(userId, roleId); - _removeUserFromRolePayload = new ApplicationTicket(_removeUserFromRolePayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _removeUserFromRolePayload = new ApplicationUserToken(_removeUserFromRolePayload, userToken); + } + else + { + _removeUserFromRolePayload = new ApplicationTicket(_removeUserFromRolePayload, ticket); + } _removeUserFromRolePayload = new ApplicationToken(_removeUserFromRolePayload, appToken); _removeUserFromRolePayload = new WrapPayload(_removeUserFromRolePayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/RenameApp.cs b/Intuit.QuickBase.Core/RenameApp.cs index 7ff0a0e..9ce7f8c 100644 --- a/Intuit.QuickBase.Core/RenameApp.cs +++ b/Intuit.QuickBase.Core/RenameApp.cs @@ -30,10 +30,19 @@ public class RenameApp : IQObject /// /// Supply application-level dbid. /// Supply a new application name. - public RenameApp(string ticket, string appToken, string accountDomain, string dbid, string newAppName) + /// optional user token that can be used instead of a ticket + public RenameApp(string ticket, string appToken, string accountDomain, string dbid, string newAppName, string userToken = "") { _renameAppPayload = new RenameAppPayload(newAppName); - _renameAppPayload = new ApplicationTicket(_renameAppPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _renameAppPayload = new ApplicationUserToken(_renameAppPayload, userToken); + } + else + { + _renameAppPayload = new ApplicationTicket(_renameAppPayload, ticket); + } _renameAppPayload = new ApplicationToken(_renameAppPayload, appToken); _renameAppPayload = new WrapPayload(_renameAppPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/RunImport.cs b/Intuit.QuickBase.Core/RunImport.cs index 11484d8..663083a 100644 --- a/Intuit.QuickBase.Core/RunImport.cs +++ b/Intuit.QuickBase.Core/RunImport.cs @@ -17,10 +17,18 @@ public class RunImport : IQObject private readonly Payload.Payload _runImportPayload; private readonly IQUri _uri; - public RunImport(string ticket, string appToken, string accountDomain, string dbid, int id) + public RunImport(string ticket, string appToken, string accountDomain, string dbid, int id, string userToken = "") { _runImportPayload = new RunImportPayload(id); - _runImportPayload = new ApplicationTicket(_runImportPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _runImportPayload = new ApplicationUserToken(_runImportPayload, userToken); + } + else + { + _runImportPayload = new ApplicationTicket(_runImportPayload, ticket); + } _runImportPayload = new ApplicationToken(_runImportPayload, appToken); _runImportPayload = new WrapPayload(_runImportPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/SendInvitation.cs b/Intuit.QuickBase.Core/SendInvitation.cs index 683f2ba..5ae4d80 100644 --- a/Intuit.QuickBase.Core/SendInvitation.cs +++ b/Intuit.QuickBase.Core/SendInvitation.cs @@ -17,19 +17,27 @@ public class SendInvitation : IQObject private Payload.Payload _sendInvitationPayload; private IQUri _uri; - public SendInvitation(string ticket, string appToken, string accountDomain, string dbid, string userId, string userText) + public SendInvitation(string ticket, string appToken, string accountDomain, string dbid, string userId, string userText, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new SendInvitationPayload(userId, userText)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new SendInvitationPayload(userId, userText), userToken); } - public SendInvitation(string ticket, string appToken, string accountDomain, string dbid, string userId) + public SendInvitation(string ticket, string appToken, string accountDomain, string dbid, string userId, string userToken = "") { - CommonConstruction(ticket, appToken, accountDomain, dbid, new SendInvitationPayload(userId)); + CommonConstruction(ticket, appToken, accountDomain, dbid, new SendInvitationPayload(userId), userToken); } - private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload) + private void CommonConstruction(string ticket, string appToken, string accountDomain, string dbid, Payload.Payload payload, string userToken = "") { - _sendInvitationPayload = new ApplicationTicket(payload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _sendInvitationPayload = new ApplicationUserToken(payload, userToken); + } + else + { + _sendInvitationPayload = new ApplicationTicket(payload, ticket); + } _sendInvitationPayload = new ApplicationToken(_sendInvitationPayload, appToken); _sendInvitationPayload = new WrapPayload(_sendInvitationPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/SetDBvar.cs b/Intuit.QuickBase.Core/SetDBvar.cs index 5ff89aa..7e3cf8f 100644 --- a/Intuit.QuickBase.Core/SetDBvar.cs +++ b/Intuit.QuickBase.Core/SetDBvar.cs @@ -17,10 +17,18 @@ public class SetDBvar : IQObject private readonly Payload.Payload _setDbVarPayload; private readonly IQUri _uri; - public SetDBvar(string ticket, string appToken, string accountDomain, string dbid, string varName, string value) + public SetDBvar(string ticket, string appToken, string accountDomain, string dbid, string varName, string value, string userToken = "") { _setDbVarPayload = new SetDBvarPayload(varName, value); - _setDbVarPayload = new ApplicationTicket(_setDbVarPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _setDbVarPayload = new ApplicationUserToken(_setDbVarPayload, userToken); + } + else + { + _setDbVarPayload = new ApplicationTicket(_setDbVarPayload, ticket); + } _setDbVarPayload = new ApplicationToken(_setDbVarPayload, appToken); _setDbVarPayload = new WrapPayload(_setDbVarPayload); _uri = new QUriDbid(accountDomain, dbid); diff --git a/Intuit.QuickBase.Core/UserRoles.cs b/Intuit.QuickBase.Core/UserRoles.cs index b1dca22..107e774 100644 --- a/Intuit.QuickBase.Core/UserRoles.cs +++ b/Intuit.QuickBase.Core/UserRoles.cs @@ -17,10 +17,18 @@ public class UserRoles : IQObject private readonly Payload.Payload _userRolesPayload; private readonly IQUri _uri; - public UserRoles(string ticket, string appToken, string accountDomain, string dbid) + public UserRoles(string ticket, string appToken, string accountDomain, string dbid, string userToken = "") { _userRolesPayload = new UserRolesPayload(); - _userRolesPayload = new ApplicationTicket(_userRolesPayload, ticket); + //If a user token is provided, use it instead of a ticket + if (userToken.Length > 0) + { + _userRolesPayload = new ApplicationUserToken(_userRolesPayload, userToken); + } + else + { + _userRolesPayload = new ApplicationTicket(_userRolesPayload, ticket); + } _userRolesPayload = new ApplicationToken(_userRolesPayload, appToken); _userRolesPayload = new WrapPayload(_userRolesPayload); _uri = new QUriDbid(accountDomain, dbid);