Example #1
0
        private async Task <ApiReply> HandleResponse(HttpResponseMessage response)
        {
            ApiReply reply = new ApiReply();

            await HandleResponseCore(reply, response);

            return(reply);
        }
Example #2
0
        private async Task <ApiReply <TReturnValue> > HandleResponse <TReturnValue>(HttpResponseMessage response)
        {
            ApiReply <TReturnValue> reply = new ApiReply <TReturnValue>();

            await HandleResponseCore(reply, response);

            if (reply.WasSuccessful)
            {
                string content = await response.Content.ReadAsStringAsync();

                reply.Result = JsonConvert.DeserializeObject <TReturnValue>(content);
            }

            return(reply);
        }
Example #3
0
        private async Task TryRefreshAccessToken()
        {
            if (CurrentUser != null && !TestAccessTokenValid())
            {
                RefreshRequest request = new RefreshRequest()
                {
                    AccessToken  = CurrentUser.AccessToken,
                    RefreshToken = CurrentUser.RefreshToken
                };
                ApiReply <User> reply = await CallApiCore <User>(HttpMethod.Post, "Users/RefreshToken", request);

                if (reply.WasSuccessful)
                {
                    CurrentUser = reply.Result;
                }
            }
        }
Example #4
0
        private async Task HandleResponseCore(ApiReply reply, HttpResponseMessage response)
        {
            switch (response.StatusCode)
            {
            case HttpStatusCode.OK:
            case HttpStatusCode.Created:
            case HttpStatusCode.Accepted:
                reply.WasSuccessful = true;
                break;

            case HttpStatusCode.NotFound:
                reply.WasSuccessful = false;
                break;

            default:
                reply.WasSuccessful = false;
                await TryHandleErrorResponse(reply, response);

                break;
            }
            reply.StatusCode = response.StatusCode;
        }
Example #5
0
        private async Task TryHandleErrorResponse(ApiReply reply, HttpResponseMessage response)
        {
            string content = await response.Content.ReadAsStringAsync();

            object result = JsonConvert.DeserializeObject(content, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            });

            if (result is NotifyException notifyException)
            {
                reply.ResultMessage = notifyException.Message;
            }
            else if (result is Exception exception)
            {
                if (exception.InnerException is NotifyException notifyException1)
                {
                    reply.ResultMessage = notifyException1.Message;
                }
                else
                {
                    throw exception;
                }
            }
        }