Beispiel #1
0
        private string CreateHref(PaperContext ctx, T paper)
        {
            var paperInfo     = PaperSpec.GetSpec <T>();
            var paperTemplate = new UriTemplate(paperInfo.Route);

            paperTemplate.SetArgsFromGraph(paper);

            var uri       = paperTemplate.CreateUri();
            var targetUri = new Route(uri);

            targetUri = targetUri.SetArg(
                "f", ctx.PathArgs["f"],
                "in", ctx.PathArgs["in"],
                "out", ctx.PathArgs["out"]
                );

            var filter = paper._Get <IFilter>("Filter");

            if (filter != null)
            {
                var map  = new FieldMap(filter);
                var args = (
                    from field in map
                    where field.Value != null
                    select new[] {
                    field.Key.ChangeCase(TextCase.CamelCase),
                    field.Value
                }
                    ).SelectMany();
                targetUri = targetUri.SetArg(args);
            }

            return(targetUri.ToString());
        }
 public void Add(Type paperType)
 {
     try
     {
         var info = PaperSpec.GetSpec(paperType);
         typeIndex.Add(info.Type, info);
         pathIndex.Add(info.Route, info);
     }
     catch (Exception ex)
     {
         ex.Trace($"[PAPER]FAULT: {paperType.FullName}: {string.Join(",", ex.GetCauseMessages())}");
     }
 }