public async Task CheckFhirServerAccessActivity()

in src/ApiForFhirMigrationTool.Function/CheckAccess.cs [158:204]


        public async Task<string> CheckFhirServerAccessActivity([ActivityTrigger] object input, FunctionContext executionContext)
        {
            ILogger logger = executionContext.GetLogger(nameof(CheckFhirServerAccessActivity));
            logger.LogInformation("Performing FHIR server access check.");

            string fhirServerUrl = $"{_options.DestinationUri}";
            JObject checkResult = new JObject();

            try
            {
                Uri baseAddress = _options.DestinationUri;
                TokenCredential tokenCredential = new DefaultAzureCredential();
                string[] scopes = new string[] { $"{baseAddress}/.default" };

                BearerTokenHandler bearerTokenHandler = new BearerTokenHandler(tokenCredential, baseAddress, scopes)
                {
                    InnerHandler = new HttpClientHandler()
                };

                HttpClient httpClient = new HttpClient(bearerTokenHandler)
                {
                    BaseAddress = baseAddress
                };

                HttpResponseMessage response = await httpClient.GetAsync(baseAddress);

                logger.LogInformation($"Status code is : {response.StatusCode}");
                if (response.IsSuccessStatusCode)
                {
                    checkResult["Status"] = "Success";
                    checkResult["Message"] = $"Successfully accessed FHIR server at '{fhirServerUrl}'.";
                }
                else
                {
                    checkResult["Status"] = "Failed";
                    checkResult["Message"] = $"Failed to access FHIR server at '{fhirServerUrl}'. Status code: {response.StatusCode}";
                }
            }
            catch (Exception ex)
            {
                logger.LogError($"Failed to access the FHIR server: {ex.Message}");
                checkResult["Status"] = "Failed";
                checkResult["Message"] = $"Failed to access the FHIR server: {ex.Message}";
            }
            logger.LogInformation($"Status for accessing FHIR service server: {checkResult["Status"]}");
            return checkResult.ToString();
        }