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