public async Task CheckAzureApiForFhirServerAccessActivity()

in src/ApiForFhirMigrationTool.Function/CheckAccess.cs [108:155]


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

            string azureApiForFhirServerUrl = $"{_options.SourceUri}";
            JObject checkResult = new JObject();

            try
            {
                Uri baseAddress = _options.SourceUri;
                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 Azure API for FHIR server at '{azureApiForFhirServerUrl}'.";
                }
                else
                {
                    checkResult["Status"] = "Failed";
                    checkResult["Message"] = $"Failed to access Azure API for FHIR server at '{azureApiForFhirServerUrl}'. Status code: {response.StatusCode}";
                }
            }
            catch (Exception ex)
            {
                logger.LogError($"Failed to access the Azure API for FHIR server: {ex.Message}");
                checkResult["Status"] = "Failed";
                checkResult["Message"] = $"Failed to access the Azure API for FHIR server: {ex.Message}";
            }

            logger.LogInformation($"Status for accessing Azure API for FHIR server: {checkResult["Status"]}");
            return checkResult.ToString();
        }