Ejemplo n.º 1
0
        /// <summary>
        /// 修改用户名和头像。
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="image"></param>
        /// <returns></returns>
        public async Task <ServiceResult> UpdateMeAsync(string userName, int totalTime, int weekTotalTime, string image)
        {
            var identifiedHttpMessageHandler =
                _identityService.GetIdentifiedHttpMessageHandler();

            using (var httpClient =
                       new HttpClient(identifiedHttpMessageHandler))
            {
                HttpResponseMessage response;
                var updateUser = new AppUser {
                    ID = _identityService.GetCurrentUserAsync().ID, ApplicationUserID = _identityService.GetCurrentUserAsync().ApplicationUserID, UserName = userName, TotalTime = totalTime, WeekTotalTime = weekTotalTime, Image = image
                };
                var json     = JsonConvert.SerializeObject(updateUser);
                var meResult = await GetMeAsync();


                try
                {
                    response = await httpClient.PutAsync(
                        App.ServerEndpoint + "/api/Users?applicationUserID=" + meResult.Result.ApplicationUserID.ToString(), new StringContent(json, Encoding.UTF8,
                                                                                                                                               "application/json"));

                    // "Student?studentId=" + HttpUtility.UrlEncode(updateUser),new StringContent(""));
                }
                catch (Exception e)
                {
                    return(new ServiceResult
                    {
                        Status = ServiceResultStatus.Exception,
                        Message = e.Message
                    });
                }
                var serviceResult = new ServiceResult
                {
                    Status =
                        ServiceResultStatusHelper.FromHttpStatusCode(
                            response.StatusCode)
                };
                switch (response.StatusCode)
                {
                case HttpStatusCode.Unauthorized:
                    break;

                case HttpStatusCode.NoContent:
                    break;

                case HttpStatusCode.BadRequest:
                    serviceResult.Message =
                        await response.Content.ReadAsStringAsync();

                    break;

                default:
                    serviceResult.Message = response.ReasonPhrase;
                    break;
                }

                return(serviceResult);
            }
        }
Ejemplo n.º 2
0
        public async Task <ServiceResult <AppUser> > GetMeAsync()
        {
            var identifiedHttpMessageHandler =
                _identityService.GetIdentifiedHttpMessageHandler();

            using (var httpClient =
                       new HttpClient(identifiedHttpMessageHandler))
            {
                HttpResponseMessage response;
                try
                {
                    response =
                        await httpClient.GetAsync(
                            App.ServerEndpoint + "/api/Users");
                }
                catch (Exception e)
                {
                    return(new ServiceResult <AppUser>
                    {
                        Status = ServiceResultStatus.Exception,
                        Message = e.Message
                    });
                }

                var serviceResult = new ServiceResult <AppUser>
                {
                    Status =
                        ServiceResultStatusHelper.FromHttpStatusCode(
                            response.StatusCode)
                };

                switch (response.StatusCode)
                {
                case HttpStatusCode.Unauthorized:
                case HttpStatusCode.Forbidden:
                    break;

                case HttpStatusCode.OK:
                    var json = await response.Content.ReadAsStringAsync();

                    serviceResult.Result =
                        JsonConvert.DeserializeObject <AppUser>(json);
                    break;

                default:
                    serviceResult.Message = response.ReasonPhrase;
                    break;
                }

                return(serviceResult);
            }
        }
        /// <summary>
        ///     登录。
        /// </summary>
        /// <returns>服务结果。</returns>
        public async Task <ServiceResult> LoginAsync()
        {
            var oidcClient = new OidcClient(CreateOidcClientOptions());

            LoginResult loginResult = null;

            try
            {
                loginResult = await oidcClient.LoginAsync(new LoginRequest());
            }
            catch (Exception e)
            {
                return(new ServiceResult
                {
                    Status = ServiceResultStatus.Exception,
                    Message = e.Message
                });
            }

            if (!string.IsNullOrEmpty(loginResult.Error))
            {
                return new ServiceResult
                       {
                           Status =
                               ServiceResultStatusHelper.FromHttpStatusCode(
                                   HttpStatusCode.BadRequest),
                           Message = loginResult.Error
                       }
            }
            ;

            var refreshTokenHandler =
                (RefreshTokenHandler)loginResult.RefreshTokenHandler;

            _refreshToken = refreshTokenHandler.RefreshToken;
            _accessToken  = refreshTokenHandler.AccessToken;



            var identifiedHttpMessageHandler = GetIdentifiedHttpMessageHandler();

            using (var httpClient =
                       new HttpClient(identifiedHttpMessageHandler))
            {
                HttpResponseMessage response;

                response =
                    await httpClient.GetAsync(
                        App.ServerEndpoint + "/api/Users");

                var json = await response.Content.ReadAsStringAsync();

                var thisUser =
                    JsonConvert.DeserializeObject <AppUser>(json);


                CurrentUser.ID                = thisUser.ID;
                CurrentUser.UserName          = thisUser.UserName;
                CurrentUser.TotalTime         = thisUser.TotalTime;
                CurrentUser.ApplicationUserID = thisUser.ApplicationUserID;
                CurrentUser.Image             = thisUser.Image;
            }
            return(new ServiceResult {
                Status = ServiceResultStatus.OK
            });
        }