public async Task <IActionResult> GetSomething(string accept) { if (!string.IsNullOrWhiteSpace(accept)) { bool generateLinks = accept.EndsWith("-hateoas"); List <NavigationLinkBuilder <SomethingResponse> > somethingResponse = new List <NavigationLinkBuilder <SomethingResponse> >(); for (int i = 1; i < 4; i++) { NavigationLinkBuilder <SomethingResponse> something = new NavigationLinkBuilder <SomethingResponse>( new SomethingResponse("FormatFilter", i)); if (generateLinks) { something.AddNavigationLink(Url.Link("GetSomethingId", new { i }), "self", "GET"); } somethingResponse.Add(something); } return(await Task.FromResult(Ok(somethingResponse))); } return(await Task.FromResult(BadRequest())); }
public void CtorNavigationSourceLinkBuilderAnnotation_SetsProperties() { // Arrange & Act & Assert Func <ResourceContext, IEdmNavigationProperty, Uri> navigationLinkFactory = (r, p) => null; NavigationLinkBuilder builder = new NavigationLinkBuilder(navigationLinkFactory, false); // Assert Assert.Same(navigationLinkFactory, builder.Factory); Assert.False(builder.FollowsConventions); }
public void HasNavigationPropertyLink_SetsIdLinkBuilder() { // Arrange EdmModel model = new EdmModel(); NavigationLinkBuilder linkBuilder = new NavigationLinkBuilder( (ResourceContext a, IEdmNavigationProperty b) => new Uri("http://orders"), followsConventions: false); // Act model.HasNavigationPropertyLink(Customers, OrdersNavigationProperty, linkBuilder); // Assert NavigationSourceLinkBuilderAnnotation annotation = model.GetNavigationSourceLinkBuilder(Customers); Uri uri = annotation.BuildNavigationLink(new ResourceContext(), OrdersNavigationProperty); Assert.Equal(uri, new Uri("http://orders")); }
/// <summary> /// Register a link builder for a <see cref="IEdmNavigationProperty" /> that navigates from Entities in this navigation source. /// </summary> public void AddNavigationPropertyLinkBuilder(IEdmNavigationProperty navigationProperty, NavigationLinkBuilder linkBuilder) { _navigationPropertyLinkBuilderLookup[navigationProperty] = linkBuilder; }