Ejemplo n.º 1
0
        private XMLNodeInteraction FindNode(IInteraction parameters)
        {
            IInteraction       candidate;
            XMLNodeInteraction nodeInteraction = null;

            // find an XmlNodeInteraction and hold on to that
            if (parameters.TryGetClosest(typeof(XMLNodeInteraction), out candidate))
            {
                nodeInteraction = (XMLNodeInteraction)candidate;
            }

            // But if a new incoming body was acquired after that
            if (parameters.TryGetClosest(typeof(IIncomingBodiedInteraction), nodeInteraction, out candidate))
            {
                // produce an XmlNodeInteraction from that instead.
                IIncomingBodiedInteraction source = (IIncomingBodiedInteraction)candidate;

                XmlDocument document = new XmlDocument();

                document.Load(source.IncomingBody);

                nodeInteraction = new XMLNodeInteraction(parameters, document, source);
            }

            if (nodeInteraction == null)
            {
                // bitter failure
                throw new Exception("Couldn't find or produce XML document");
            }

            return(nodeInteraction);
        }
Ejemplo n.º 2
0
        protected override bool Process(IInteraction parameters)
        {
            IIncomingBodiedInteraction incoming = (IIncomingBodiedInteraction)parameters.GetClosest(typeof(IIncomingBodiedInteraction));
            IOutgoingBodiedInteraction outgoing = (IOutgoingBodiedInteraction)parameters.GetClosest(typeof(IOutgoingBodiedInteraction));

            incoming.IncomingBody.CopyTo(outgoing.OutgoingBody);

            return(true);
        }
Ejemplo n.º 3
0
        public bool TryGetDatareader(IInteraction parameters, IInteraction until, out TextReader reader)
        {
            IInteraction candidate;
            bool         success;

            if (IsForwardSourcing)
            {
                MemoryStream dataTarget = new MemoryStream();
                SimpleOutgoingInteraction dataTargetInteraction;
                dataTargetInteraction = new SimpleOutgoingInteraction(
                    dataTarget, this.Encoding, parameters);

                success = ForwardSource.TryProcess(dataTargetInteraction);

                dataTargetInteraction.Done();
                dataTarget.Position = 0;

                reader = new StreamReader(dataTarget, this.Encoding);
            }
            else if (IsVariableSourcing)
            {
                string value;

                success = parameters.TryGetFallbackString(this.Variable, out value);

                if (success)
                {
                    reader = new StringReader(value);
                }
                else
                {
                    reader = null;
                }
            }
            else if (parameters.TryGetClosest(typeof(IIncomingBodiedInteraction), until, out candidate))
            {
                IIncomingBodiedInteraction source = (IIncomingBodiedInteraction)candidate;

                success = CheckMimetype(source.ContentType);
                reader  = source.GetIncomingBodyReader();
            }
            else
            {
                success = false;
                reader  = null;
            }

            return(success);
        }
Ejemplo n.º 4
0
        public XMLNodeInteraction(IInteraction parameters, XmlNode node, IIncomingBodiedInteraction source)
            : base(parameters)
        {
            this.Node   = node;
            this.Source = source;

            this["node_name"] = this.Node.LocalName;

            if (node.Attributes != null)
            {
                foreach (XmlAttribute attrib in node.Attributes)
                {
                    this[attrib.Name] = attrib.Value;
                }
            }
        }