示例#1
0
文件: Rules.cs 项目: xeno3/fubumvc
 public void ApplyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
 {
     if (applyOutputs(node, chain, settings) == DoNext.Continue && Next != null)
     {
         Next.ApplyOutputs(node, chain, settings);
     }
 }
示例#2
0
 protected internal override void InsertNodes(ConnegSettings settings)
 {
     base.InsertNodes(settings);
     if (Authentication != null)
     {
         InsertFirst(Authentication);
     }
 }
示例#3
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyInputs(IInputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            node.Add(typeof(ModelBindingReader <>));
            node.Add(settings.FormatterFor(MimeType.Json));
            node.Add(settings.FormatterFor(MimeType.Xml));

            return(DoNext.Continue);
        }
示例#4
0
        protected override DoNext applyInputs(IInputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            var graph = settings.Graph ?? new ConnegGraph();

            graph.ReaderTypesFor(node.InputType()).Each(type => node.Add(Activator.CreateInstance((Type)type).As <IReader>()));

            return(DoNext.Continue);
        }
示例#5
0
        public void add_formatter_places_it_first()
        {
            var settings = new ConnegSettings();

            settings.AddFormatter(new AjaxAwareJsonSerializer());

            settings.FormatterFor(MimeType.Json)
            .ShouldBeOfType <AjaxAwareJsonSerializer>();
        }
示例#6
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyInputs(IInputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (chain.AnyActionHasAttribute <SymmetricJsonAttribute>())
            {
                node.Add(settings.FormatterFor(MimeType.Json));

                return(DoNext.Stop);
            }

            return(DoNext.Continue);
        }
示例#7
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyInputs(IInputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (!chain.ResourceType().CanBeCastTo <AjaxContinuation>())
            {
                return(DoNext.Continue);
            }

            node.Add(typeof(ModelBindingReader <>));
            node.Add(settings.FormatterFor(MimeType.Json));

            return(DoNext.Stop);
        }
示例#8
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyInputs(IInputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (chain.AnyActionHasAttribute <AsymmetricJsonAttribute>() || chain.ResourceType().CanBeCastTo <IDictionary <string, object> >())
            {
                node.Add(typeof(ModelBindingReader <>));
                node.Add(settings.FormatterFor(MimeType.Json));

                return(DoNext.Stop);
            }

            return(DoNext.Continue);
        }
示例#9
0
        public void use_a_custom_querystring_parameter()
        {
            var request = new StandInCurrentHttpRequest();

            request.QueryString["Format"] = "Text";

            var settings = new ConnegSettings();

            settings.QuerystringParameters.Add(new ConnegQuerystring("Format", "Text", MimeType.Text));

            var mimeType = new CurrentMimeType("text/json", theOriginalMimetype);

            settings.InterpretQuerystring(mimeType, request);

            mimeType.AcceptTypes.Single().ShouldEqual(MimeType.Text.Value);
        }
示例#10
0
        internal protected virtual void InsertNodes(ConnegSettings settings)
        {
            if (HasResourceType() && !ResourceType().CanBeCastTo <FubuContinuation>())
            {
                var outputNode = _output.Value;
                outputNode.UseSettings(settings);

                AddToEnd(outputNode);
            }

            if (_authorization.IsValueCreated && Authorization.HasRules())
            {
                Prepend(_authorization.Value);
            }

            if (InputType() != null)
            {
                _input.Value.UseSettings(settings);
                Prepend(_input.Value);
            }

            this.OfType <IModifiesChain>().ToArray().Each(x => x.Modify(this));
        }
示例#11
0
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            var graph = settings.Graph ?? new ConnegGraph();

            graph.WriterTypesFor(node.ResourceType).Each(type => node.Add((IMediaWriter)Activator.CreateInstance(type)));

            return(DoNext.Continue);
        }
示例#12
0
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (chain.ResourceType().CanBeCastTo <HtmlTag>() || chain.ResourceType().CanBeCastTo <HtmlDocument>())
            {
                node.Add(typeof(HtmlStringWriter <>));
                return(DoNext.Stop);
            }

            return(DoNext.Continue);
        }
示例#13
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            node.Add(settings.FormatterFor(MimeType.Json));
            node.Add(settings.FormatterFor(MimeType.Xml));

            return(DoNext.Continue);
        }
示例#14
0
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            var candidates = settings.Views.Where(x => x.ViewModel == node.ResourceType).ToArray();

            if (candidates.Count() == 1)
            {
                if (!node.HasView())
                {
                    node.AddView(candidates.Single());
                }
            }

            return(DoNext.Continue);
        }
示例#15
0
文件: Rules.cs 项目: xeno3/fubumvc
 protected virtual DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
 {
     return(DoNext.Continue);
 }
示例#16
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (!chain.ResourceType().CanBeCastTo <AjaxContinuation>())
            {
                return(DoNext.Continue);
            }

            node.Add(typeof(AjaxContinuationWriter <>));

            return(DoNext.Stop);
        }
示例#17
0
文件: Rules.cs 项目: xeno3/fubumvc
        protected override DoNext applyOutputs(IOutputNode node, BehaviorChain chain, ConnegSettings settings)
        {
            if (chain.ResourceType() == typeof(string))
            {
                node.Add(new StringWriter());

                return(DoNext.Stop);
            }

            return(base.applyOutputs(node, chain, settings));
        }
示例#18
0
 public void UseSettings(ConnegSettings settings)
 {
     _settings = settings;
 }
示例#19
0
 protected override void InsertNodes(ConnegSettings settings)
 {
     // do nothing.
 }