/// <summary> /// トークン情報が正しいものかどうか照合するAPIコール /// </summary> /// <param name="uri">コールするURL</param> /// <param name="token">トークン情報</param> /// <returns>TokenCheckParam</returns> public virtual async Task <TokenCheckParam> CheckTokenDataAsync(string uri, TokenData token) { var tokenCheckParam = new TokenCheckParam(); var tokenCheckUrl = uri + "?tokenText=" + token.TokenText; try { HttpResponseMessage response = await _client.GetAsync(tokenCheckUrl); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); if (content == "[null]") { tokenCheckParam.HasError = true; tokenCheckParam.NotFoundTokenText = true; return(tokenCheckParam); } //[]を除去する処理 content = _jsonProcessing.RemoveOuterBrackets(content); var receivedTokenData = JsonConvert.DeserializeObject <TokenData>(content); //有効時間内かどうか検証 DateTime dt = DateTime.Now; if (receivedTokenData.StartTime < dt && receivedTokenData.EndTime > dt) { tokenCheckParam.IsSuccessed = true; return(tokenCheckParam); } else { //有効時間外のTokenだった場合 tokenCheckParam.HasError = true; tokenCheckParam.IsOverTimeToken = true; } } else { //該当するtokenTextがDB内に見つからないとき tokenCheckParam.HasError = true; tokenCheckParam.NotFoundTokenText = true; } } catch (Exception ex) { Debug.WriteLine("\tERROR {0}", ex.Message); } return(tokenCheckParam); }
public async Task TokenCheck_Validate_Success() { var testTokenText = "test"; var testTokenStartTime = DateTime.Now; var testTokenEndTime = DateTime.Now.AddHours(1); var testToken = new TokenData(testTokenText, testTokenStartTime, testTokenEndTime); var responseTokenCheckParam = new TokenCheckParam(); responseTokenCheckParam.IsSuccessed = true; _mockRestService.Setup(r => r.CheckTokenDataAsync(It.IsAny <string>(), It.IsAny <TokenData>())).ReturnsAsync(responseTokenCheckParam); var actual = await _target.Validate(testToken); Assert.IsNotNull(actual); Assert.AreEqual(responseTokenCheckParam.IsSuccessed, actual.IsSuccessed); Assert.AreEqual(responseTokenCheckParam.HasError, actual.HasError); _mockRestService.VerifyAll(); }
public async Task <TokenCheckParam> Validate(TokenData token) { var tokenCheckParam = new TokenCheckParam(); //Localのtoken情報参照 if (token == null) { tokenCheckParam.HasError = true; tokenCheckParam.NoExistMyToken = true; } else { var tokenData = token; //DBのtokenと照合するAPIのコール tokenCheckParam = await _restService.CheckTokenDataAsync(TokenConstants.OpenTokenEndPoint, tokenData); } return(tokenCheckParam); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="navigationService"></param> public MeetingDataTopPageViewModel(INavigationService navigationService) : base(navigationService) { _navigationService = navigationService; _restService = new RestService(); _applicationProperties = new ApplicationProperties(); _operateDateTime = new OperateDateTime(); _tokenCheckParam = new TokenCheckParam(); //アプリ使用者のユーザーIDの取得 MyUserId = _applicationProperties.GetFromProperties <string>("userId"); //会議の削除ボタンが押されたときの処理 DeleteMeetingCommand = new DelegateCommand <object>(async id => { //管理者が操作する会議終了処理 var select = await Application.Current.MainPage.DisplayAlert("警告", "会議を削除してもよろしいでしょうか?", "OK", "キャンセル"); if (select) { var mid = Convert.ToInt32(id); //対象となる会議情報を1件取得 var getMeetingParam = new GetMeetingParam(); getMeetingParam = await _restService.GetMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, mid); var updateMeetingData = getMeetingParam.MeetingData; //フラグをfalseに変更 updateMeetingData.IsVisible = false; await _restService.UpdateMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, updateMeetingData); //会議情報再取得 GetMeetingsParam = await _restService.GetMeetingsDataAsync(MeetingConstants.OpenMeetingEndPoint, MyUserId); Meetings = GetMeetingsParam.Meetings; } else { return; } }); //会議新規作成ページに遷移するコマンド NavigateMeetingCreatePage = new DelegateCommand(async() => { //会議情報トップページに遷移する await _navigationService.NavigateAsync("/NavigationPage/MeetingDataCreatePage"); }); //会議出席ページに遷移するコマンド NavigateMeetingAttendPage = new DelegateCommand <object>(async id => { var mid = Convert.ToInt32(id); //指定の会議の情報をCommandParameterで受け取り、会議id(mid)を取得する var getMeetingParam = new GetMeetingParam(); getMeetingParam = await _restService.GetMeetingDataAsync(MeetingConstants.OpenMeetingEndPoint, mid); var p = new NavigationParameters { { "mid", getMeetingParam.MeetingData.Id } }; //会議情報トップページに遷移する await _navigationService.NavigateAsync("MeetingAttendPage", p); }); }