private SiteUser UpdateUser(string userId, string newRole, SiteUserAuth newAuthentication) { AppDiagnostics.Assert(!string.IsNullOrWhiteSpace(userId), "missing user id"); AppDiagnostics.Assert(!string.IsNullOrWhiteSpace(newRole), "missing role"); string newAuthenticationText = SendCreateUser.SiteUserAuthToAttributeText(newAuthentication); //ref: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm#update_user var sb = new StringBuilder(); var xmlWriter = XmlWriter.Create(sb, XmlHelper.XmlSettingsForWebRequests); xmlWriter.WriteStartElement("tsRequest"); xmlWriter.WriteStartElement("user"); xmlWriter.WriteAttributeString("siteRole", newRole); xmlWriter.WriteAttributeString("authSetting", newAuthenticationText); xmlWriter.WriteEndElement(); //</user> xmlWriter.WriteEndElement(); // </tsRequest> xmlWriter.Close(); var xmlText = sb.ToString(); //Get the XML text out //Create a web request var urlUpdateUser = _onlineUrls.Url_UpdateSiteUser(_onlineSession, userId); var webRequest = this.CreateLoggedInWebRequest(urlUpdateUser, "PUT"); TableauServerRequestBase.SendPutContents(webRequest, xmlText); //Get the response var response = GetWebReponseLogErrors(webRequest, "update yser (change auth or role)"); using (response) { var xmlDoc = GetWebResponseAsXml(response); //Get all the user nodes var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline"); var xNodeUser = xmlDoc.SelectSingleNode("//iwsOnline:user", nsManager); try { return(SiteUser.FromUserXMLWithoutUserId(xNodeUser, userId)); } catch (Exception parseXml) { StatusLog.AddError("Update user, error parsing XML response " + parseXml.Message + "\r\n" + xNodeUser.InnerXml); return(null); } } }
/// <summary> /// The ADD-User path for provisioning a user /// </summary> /// <param name="siteSignIn"></param> /// <param name="userToProvision"></param> /// <param name="missingUserAction"></param> private void Execute_ProvisionUsers_SingleUser_AddUser(TableauServerSignIn siteSignIn, ProvisioningUser userToProvision, ProvisionUserInstructions.MissingUserAction missingUserAction) { switch (missingUserAction) { //Add the user case ProvisionUserInstructions.MissingUserAction.Add: //Setup to create a new user var createUser = new SendCreateUser( siteSignIn.ServerUrls, siteSignIn, userToProvision.UserName, userToProvision.UserRole, userToProvision.UserAuthenticationParsed); var userCreated = createUser.ExecuteRequest(); //------------------------------------------------------------------------------- //Record the action in an output file //------------------------------------------------------------------------------- CSVRecord_UserModified(userToProvision.UserName, userToProvision.UserRole, userToProvision.UserAuthentication, "added", ""); return; //Don't add the user, just record the finding case ProvisionUserInstructions.MissingUserAction.Report: /*CSVRecord_Warning( * userToProvision.UserName, * userToProvision.UserRole, * userToProvision.UserAuthentication, * "Add user: Per provisioning instructions, unknown existing user left unaltered"); */ CSVRecord_UserModified(userToProvision.UserName, userToProvision.UserRole, userToProvision.UserAuthentication, "SIMULATED added", ""); return; default: IwsDiagnostics.Assert(false, "814-1210: Unknown missing user provisioning action"); throw new Exception("814-1210: Unknown missing user provisioning action"); } }
/*==========================================================================*/ /* var */ /*==========================================================================*/ /*==========================================================================*/ /* prototype */ /*==========================================================================*/ /*==========================================================================*/ /* func */ /*==========================================================================*/ //---------------------------------------------------------------------------- /*! * @brief APIパケット送信リトライ: * @note この処理は通信の結果「端末とサーバーの関連切れてるからユーザー認証しなおしてね」が発生した際に送りなおすことに特化している。 * 再送元のパケットは一度サーバーに届いて正式に拒否られているので、パケットユニークIDを別にしてから再度送りなおすことで受理を期待する */ //---------------------------------------------------------------------------- static public uint SendPacketAPIRetry(SERVER_API eAPIType, string strAPIData, uint unPacketUniqueID) { #if true //------------------------- // 再送時にパケットにユニークIDを変えない方がサーバー側が対応しやすいらしい。 // そのまま前に送ったものをもう一度送る形で対応する //------------------------- Debug.LogError("Packet Retry - " + eAPIType); #else //------------------------- // 再送時にはヘッダのパケットユニークIDだけを更新してから送る //------------------------- PacketStructHeaderSend cSendHeader = ServerDataUtilSend.CreateStructHeader(); switch (eAPIType) { //------------------------- // APIタイプ:ユーザー管理:ユーザー新規生成 //------------------------- case SERVER_API.SERVER_API_USER_CREATE: { SendCreateUser cSendPacket = JsonMapper.ToObject <SendCreateUser>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユーザー管理:ユーザー承認 //------------------------- case SERVER_API.SERVER_API_USER_AUTHENTICATION: { SendUserAuthentication cSendPacket = JsonMapper.ToObject <SendUserAuthentication>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユーザー管理:ユーザー名称変更 //------------------------- case SERVER_API.SERVER_API_USER_RENAME: { SendRenameUser cSendPacket = JsonMapper.ToObject <SendRenameUser>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユーザー管理:ユーザー初期設定 //------------------------- case SERVER_API.SERVER_API_USER_SELECT_DEF_PARTY: { SendSelectDefParty cSendPacket = JsonMapper.ToObject <SendSelectDefParty>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユーザー管理:ユーザー再構築 //------------------------- case SERVER_API.SERVER_API_USER_RENEW: { SendRenewUser cSendPacket = JsonMapper.ToObject <SendRenewUser>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:マスターデータ操作:マスターデータ実体取得(全種) //------------------------- case SERVER_API.SERVER_API_MASTER_DATA_GET_ALL: { SendGetMasterDataAll cSendPacket = JsonMapper.ToObject <SendGetMasterDataAll>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ログイン情報:ログインパック情報取得 //------------------------- case SERVER_API.SERVER_API_GET_LOGIN_PACK: { SendLoginPack cSendPacket = JsonMapper.ToObject <SendLoginPack>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ログイン情報:ログイン情報取得 //------------------------- case SERVER_API.SERVER_API_GET_LOGIN_PARAM: { SendLoginParam cSendPacket = JsonMapper.ToObject <SendLoginParam>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:フレンド操作:フレンド一覧取得 //------------------------- case SERVER_API.SERVER_API_FRIEND_LIST_GET: { SendFriendListGet cSendPacket = JsonMapper.ToObject <SendFriendListGet>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:フレンド操作:フレンド申請 //------------------------- case SERVER_API.SERVER_API_FRIEND_REQUEST: { SendFriendRequest cSendPacket = JsonMapper.ToObject <SendFriendRequest>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:フレンド操作:フレンド申請承認 //------------------------- case SERVER_API.SERVER_API_FRIEND_CONSENT: { SendFriendConsent cSendPacket = JsonMapper.ToObject <SendFriendConsent>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:フレンド操作:フレンド解除 //------------------------- case SERVER_API.SERVER_API_FRIEND_REFUSAL: { SendFriendRefusal cSendPacket = JsonMapper.ToObject <SendFriendRefusal>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:フレンド操作:フレンドユーザー検索 //------------------------- case SERVER_API.SERVER_API_FRIEND_SEARCH: { SendFriendSearch cSendPacket = JsonMapper.ToObject <SendFriendSearch>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユニット操作:ユニットパーティ編成設定 //------------------------- case SERVER_API.SERVER_API_UNIT_PARTY_ASSIGN: { SendUnitPartyAssign cSendPacket = JsonMapper.ToObject <SendUnitPartyAssign>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユニット操作:ユニット売却 //------------------------- case SERVER_API.SERVER_API_UNIT_SALE: { SendUnitSale cSendPacket = JsonMapper.ToObject <SendUnitSale>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユニット操作:ユニット強化合成 //------------------------- case SERVER_API.SERVER_API_UNIT_BLEND_BUILDUP: { SendUnitBlendBuildUp cSendPacket = JsonMapper.ToObject <SendUnitBlendBuildUp>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユニット操作:ユニット進化合成 //------------------------- case SERVER_API.SERVER_API_UNIT_BLEND_EVOL: { SendUnitBlendEvol cSendPacket = JsonMapper.ToObject <SendUnitBlendEvol>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:助っ人一覧取得 //------------------------- case SERVER_API.SERVER_API_QUEST_HELPER_GET: { SendQuestHelperGet cSendPacket = JsonMapper.ToObject <SendQuestHelperGet>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:助っ人一覧取得(進化合成用) //------------------------- case SERVER_API.SERVER_API_QUEST_HELPER_GET_EVOL: { SendQuestHelperGetEvol cSendPacket = JsonMapper.ToObject <SendQuestHelperGetEvol>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:助っ人一覧取得(強化合成用) //------------------------- case SERVER_API.SERVER_API_QUEST_HELPER_GET_BUILD: { SendQuestHelperGetBuild cSendPacket = JsonMapper.ToObject <SendQuestHelperGetBuild>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:クエスト開始 //------------------------- case SERVER_API.SERVER_API_QUEST_START: { SendQuestStart cSendPacket = JsonMapper.ToObject <SendQuestStart>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:クエストクリア //------------------------- case SERVER_API.SERVER_API_QUEST_CLEAR: { SendQuestClear cSendPacket = JsonMapper.ToObject <SendQuestClear>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- //------------------------- // APIタイプ:クエスト操作:クエストリタイア //------------------------- //------------------------- case SERVER_API.SERVER_API_QUEST_RETIRE: { SendQuestRetire cSendPacket = JsonMapper.ToObject <SendQuestRetire>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:クエスト受託情報取得 //------------------------- case SERVER_API.SERVER_API_QUEST_ORDER_GET: { SendQuestOrderGet cSendPacket = JsonMapper.ToObject <SendQuestOrderGet>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:インゲーム中:コンティニュー //------------------------- case SERVER_API.SERVER_API_QUEST_CONTINUE: { SendQuestContinue cSendPacket = JsonMapper.ToObject <SendQuestContinue>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:インゲーム中:リセット //------------------------- case SERVER_API.SERVER_API_QUEST_RESET: { SendQuestReset cSendPacket = JsonMapper.ToObject <SendQuestReset>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:進化クエスト開始 //------------------------- case SERVER_API.SERVER_API_EVOL_QUEST_START: { SendEvolQuestStart cSendPacket = JsonMapper.ToObject <SendEvolQuestStart>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:クエスト操作:進化クエストクリア //------------------------- case SERVER_API.SERVER_API_EVOL_QUEST_CLEAR: { SendEvolQuestClear cSendPacket = JsonMapper.ToObject <SendEvolQuestClear>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:不正検出関連:不正検出送信 //------------------------- case SERVER_API.SERVER_API_INJUSTICE: { SendInjustice cSendPacket = JsonMapper.ToObject <SendInjustice>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- //------------------------- //------------------------- // APIタイプ:チュートリアル関連:進行集計 //------------------------- case SERVER_API.SERVER_API_TUTORIAL: { SendTutorialStep cSendPacket = JsonMapper.ToObject <SendTutorialStep>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:魔法石使用:ユニット枠増設 //------------------------- case SERVER_API.SERVER_API_STONE_USE_UNIT: { SendStoneUsedUnit cSendPacket = JsonMapper.ToObject <SendStoneUsedUnit>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:魔法石使用:フレンド枠増設 //------------------------- case SERVER_API.SERVER_API_STONE_USE_FRIEND: { SendStoneUsedFriend cSendPacket = JsonMapper.ToObject <SendStoneUsedFriend>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:魔法石使用:スタミナ回復 //------------------------- case SERVER_API.SERVER_API_STONE_USE_STAMINA: { SendStoneUsedStamina cSendPacket = JsonMapper.ToObject <SendStoneUsedStamina>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ガチャ操作:ガチャ実行 //------------------------- case SERVER_API.SERVER_API_GACHA_PLAY: { SendGachaPlay cSendPacket = JsonMapper.ToObject <SendGachaPlay>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:課金操作:魔法石購入直前処理( iOS … AppStore ) //------------------------- case SERVER_API.SERVER_API_STONE_PAY_PREV_IOS: { SendStorePayPrev_ios cSendPacket = JsonMapper.ToObject <SendStorePayPrev_ios>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:課金操作:魔法石購入直前処理( Android … GooglePlay ) //------------------------- case SERVER_API.SERVER_API_STONE_PAY_PREV_ANDROID: { SendStorePayPrev_android cSendPacket = JsonMapper.ToObject <SendStorePayPrev_android>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:課金操作:魔法石購入反映処理( iOS … AppStore ) //------------------------- case SERVER_API.SERVER_API_STONE_PAY_IOS: { SendStorePay_ios cSendPacket = JsonMapper.ToObject <SendStorePay_ios>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:課金操作:魔法石購入反映処理( Android … GooglePlay ) //------------------------- case SERVER_API.SERVER_API_STONE_PAY_ANDROID: { SendStorePay_android cSendPacket = JsonMapper.ToObject <SendStorePay_android>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:ユーザーレビュー関連:レビュー遷移報酬 //------------------------- case SERVER_API.SERVER_API_REVIEW_PRESENT: { SendReviewPresent cSendPacket = JsonMapper.ToObject <SendReviewPresent>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:プレゼント関連:プレゼント一覧取得 //------------------------- case SERVER_API.SERVER_API_PRESENT_LIST_GET: { SendPresentListGet cSendPacket = JsonMapper.ToObject <SendPresentListGet>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:プレゼント関連:プレゼント開封 //------------------------- case SERVER_API.SERVER_API_PRESENT_OPEN: { SendPresentOpen cSendPacket = JsonMapper.ToObject <SendPresentOpen>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:デバッグ機能関連:ユーザーランクアップ //------------------------- #if BUILD_TYPE_DEBUG case SERVER_API.SERVER_API_DEBUG_RANKUP: { SendDebugUserRankUp cSendPacket = JsonMapper.ToObject <SendDebugUserRankUp>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; #endif //------------------------- // APIタイプ:デバッグ機能関連:ユニット取得 //------------------------- #if BUILD_TYPE_DEBUG case SERVER_API.SERVER_API_DEBUG_UNIT_GET: { SendDebugUnitGet cSendPacket = JsonMapper.ToObject <SendDebugUnitGet>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; //------------------------- // APIタイプ:デバッグ機能関連:クエストクリア情報改変 //------------------------- #endif #if BUILD_TYPE_DEBUG case SERVER_API.SERVER_API_DEBUG_QUEST_CLEAR: { SendDebugQuestClear cSendPacket = JsonMapper.ToObject <SendDebugQuestClear>(strAPIData); cSendPacket.header = cSendHeader; strAPIData = JsonMapper.ToJson(cSendPacket); } break; #endif //------------------------- // //------------------------- } #endif //-------------------------------- // API送信リクエスト発行 //-------------------------------- return(ServerDataManager.Instance.AddCommunicateRequest( eAPIType , strAPIData , unPacketUniqueID )); }