コード例 #1
0
ファイル: RestService.cs プロジェクト: basaaaaa/MeetingApp
        /// <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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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);
            });
        }