/// <summary> /// When a ResourceReference is relative, use the parent resource's fullUrl (e.g. from a Bundle's entry) /// to make it absolute. /// </summary> /// <param name="reference">The ResourceReference to get the (possibily relative) url from</param> /// <param name="parentResourceUri">Absolute uri representing the location of the resource this reference is in.</param> /// <remarks>Implements (part of the logic) as described in bundle.html#6.7.4.1</remarks> /// <returns></returns> public static Uri GetAbsoluteUriForReference(this ResourceReference reference, Uri parentResourceUri) { if (parentResourceUri == null) { throw Error.ArgumentNull(nameof(parentResourceUri)); } if (reference == null) { throw Error.ArgumentNull(nameof(reference)); } if (reference.Reference == null) { return(null); } // Don't need to do anything when Uri is absolute var referenceUri = new Uri(reference.Reference, UriKind.RelativeOrAbsolute); if (referenceUri.IsAbsoluteUri) { return(referenceUri); } if (!ResourceIdentity.IsRestResourceIdentity(parentResourceUri)) { throw Error.Argument(nameof(parentResourceUri), "Must be an absolute FHIR REST identity when reference is relative"); } var parent = new ResourceIdentity(parentResourceUri); return(HttpUtil.MakeAbsoluteToBase(referenceUri, parent.BaseUri)); }
internal static bool IsBinaryResponse(string responseUri, string contentType) { if (!string.IsNullOrEmpty(contentType) && (ContentType.XML_CONTENT_HEADERS.Contains(contentType.ToLower()) || ContentType.JSON_CONTENT_HEADERS.Contains(contentType.ToLower()) ) ) { return(false); } if (ResourceIdentity.IsRestResourceIdentity(responseUri)) { var id = new ResourceIdentity(responseUri); if (id.ResourceType != ResourceType.Binary.ToString()) { return(false); } if (id.Id != null && Id.IsValidValue(id.Id)) { return(true); } if (id.VersionId != null && Id.IsValidValue(id.VersionId)) { return(true); } } return(false); }
internal static bool IsBinaryResponse(string responseUri, string contentType) { if (!string.IsNullOrEmpty(contentType) && (contentType.ToLower() == "application/xml+fhir" || contentType.ToLower() == "application/json+fhir")) { return(false); } if (ResourceIdentity.IsRestResourceIdentity(responseUri)) { var id = new ResourceIdentity(responseUri); if (id.ResourceType != ResourceType.Binary.ToString()) { return(false); } if (id.Id != null && Id.IsValidValue(id.Id)) { return(true); } if (id.VersionId != null && Id.IsValidValue(id.VersionId)) { return(true); } } return(false); }
internal static bool IsBinaryResponse(string responseUri) { if (ResourceIdentity.IsRestResourceIdentity(responseUri)) { var id = new ResourceIdentity(responseUri); if (id.ResourceType != ResourceType.Binary.ToString()) { return(false); } if (id.Id != null && Id.IsValidValue(id.Id)) { return(true); } if (id.VersionId != null && Id.IsValidValue(id.VersionId)) { return(true); } } return(false); }