static void Main(string[] args) { var restagent = new RestAgent(); MazeSemanticsProvider.RegisterSemantics(restagent.SemanticsRegistry); restagent.SetAcceptedMediaTypes( new[] { new MediaTypeWithQualityHeaderValue("application/vnd.amundsen.maze+xml") }); var link = new Link() {Target = new Uri("http://amundsen.com/examples/mazes/2d/five-by-five/")}; restagent.NavigateTo(link); var startlink = restagent.CurrentContent.GetLink<StartLink>(); restagent.NavigateTo(startlink); // Pick first available door var firstlink = (from lk in restagent.CurrentContent.GetLinks() where !(lk is CurrentLink || lk is StartLink) select lk).First(); restagent.NavigateTo((Link)firstlink); var linkfrom = firstlink; while (restagent.CurrentContent.GetLink<ExitLink>() == null) { Link chosenLink = null; var availablelinks = (from lk in restagent.CurrentContent.GetLinks() select lk).ToDictionary(lk => lk.Relation); switch(linkfrom.Relation) { case "east": chosenLink = ChooseDoor(availablelinks, "south", "east", "north", "west"); break; case "west": chosenLink = ChooseDoor(availablelinks, "north", "west", "south", "east"); break; case "south": chosenLink = ChooseDoor(availablelinks, "west", "south", "east", "north"); break; case "north": chosenLink = ChooseDoor(availablelinks, "east", "north", "west", "south"); break; } Console.WriteLine("Going : " + chosenLink.Relation); restagent.NavigateTo((Link)chosenLink); linkfrom = chosenLink; } Console.WriteLine("Complete"); Console.ReadLine(); }
private static ShellModel CreateMazeModel(CompositionContainer container) { EscapeMaze escapeMaze = CreateEscapeMazeMission(); var mazeLink = new Link() {Target = new Uri("http://amundsen.com/examples/mazes/2d/five-by-five/")}; var restAgent = new RestAgent(); MazeSemanticsProvider.RegisterSemantics(restAgent.SemanticsRegistry); restAgent.SemanticsRegistry.RegisterFormatter(new XmlFormatter("application/vnd.amundsen.maze+xml")); restAgent.SemanticsRegistry.RegisterFormatter(new HtmlFormatter()); restAgent.SemanticsRegistry.RegisterLinkExtractor(new HtmlLinkExtractor()); //restAgent.SetAcceptedMediaTypes(new List<MediaTypeWithQualityHeaderValue>(){ new MediaTypeWithQualityHeaderValue("application/vnd.amundsen.maze+xml")}); restAgent.SetAcceptedMediaTypes(new List<MediaTypeWithQualityHeaderValue>() { new MediaTypeWithQualityHeaderValue("text/html") }); restAgent.NavigateTo(mazeLink); return new ShellModel { Container = container, DefaultMission = escapeMaze, RestAgent = restAgent }; }