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();
}