コード例 #1
0
        public async Task <IActionResult> Health()
        {
            var response = new HealthResponse {
                Version = GetApplicationVersion()
            };

            try
            {
                const string username = "******";
                var          query    = new GetUserByUsernameQuery(username);
                await _queryHandler.Handle <GetUserByUsernameQuery, UserDto>(query);

                response.TestApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.TestApiHealth.Successful   = false;
                response.TestApiHealth.ErrorMessage = ex.Message;
                response.TestApiHealth.Data         = ex.Data;
            }

            try
            {
                await _bookingsApiClient.CheckServiceHealthAsync();

                response.BookingsApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.BookingsApiHealth.Successful   = false;
                response.BookingsApiHealth.ErrorMessage = ex.Message;
                response.BookingsApiHealth.Data         = ex.Data;
            }

            try
            {
                await _userApiClient.CheckServiceHealthAsync();

                response.UserApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.UserApiHealth.Successful   = false;
                response.UserApiHealth.ErrorMessage = ex.Message;
                response.UserApiHealth.Data         = ex.Data;
            }

            try
            {
                await _videoApiClient.CheckServiceHealthAsync();

                response.VideoApiHealth.Successful = true;
            }
            catch (Exception ex)
            {
                response.VideoApiHealth.Successful   = false;
                response.VideoApiHealth.ErrorMessage = ex.Message;
                response.VideoApiHealth.Data         = ex.Data;
            }

            return(response.TestApiHealth.Successful && response.BookingsApiHealth.Successful &&
                   response.UserApiHealth.Successful && response.VideoApiHealth.Successful
                ? Ok(response)
                : StatusCode((int)HttpStatusCode.InternalServerError, response));
        }