private static Link CreateResourceRelationshipLink(IHypermediaContext hypermediaContext, IResourcePathContext resourcePathContext, IResourceType resourceType, object clrResource, bool addRelationshipsPathSegment, IRelationshipInfo relationship, Meta apiRelationshipLinkMeta) { Contract.Requires(hypermediaContext != null); Contract.Requires(resourcePathContext != null); Contract.Requires(resourceType != null); Contract.Requires(clrResource != null); Contract.Requires(relationship != null); var clrResourceType = resourceType.ClrType; var urlBuilderConfiguration = hypermediaContext.GetUrlBuilderConfiguration(clrResourceType); var apiId = resourceType.GetApiId(clrResource); var apiResourcePath = resourcePathContext.GetResourceSelfPath(apiId); var apiRelationshipRelPathSegment = relationship.ApiRelPathSegment; var apiRelationshipLinkHRef = UrlBuilder.Create(urlBuilderConfiguration) .Path(apiResourcePath) .Path(Keywords.Relationships, addRelationshipsPathSegment) .Path(apiRelationshipRelPathSegment) .Build(); var apiRelationshipLink = new Link { HRef = apiRelationshipLinkHRef, Meta = apiRelationshipLinkMeta }; return(apiRelationshipLink); }