bool IReaderRule.TryToApply(RouteChain chain) { var customReaders = _serializers.CustomReadersFor(chain.InputType); if (customReaders.Length == 1) { chain.Reader = customReaders.Single(); chain.Middleware.Add(new UseReader(chain, true)); } else if (customReaders.Length > 1) { chain.ConnegReader = _serializers.ReaderFor(chain.InputType); var selectReader = new SelectReader(); chain.Middleware.Add(selectReader); chain.Middleware.Add(new CheckForMissing(415, selectReader.ReturnVariable)); chain.Middleware.Add(new UseReader(chain, false)); } else { var reader = _serializers.ReaderFor(chain.InputType); chain.Reader = _serializers.JsonReaderFor(chain.InputType); chain.Middleware.Add(new UseReader(chain, true)); } return(true); }
public void ApplyConneg(SerializationGraph graph) { if (InputType != null) { ConnegReader = graph.ReaderFor(InputType); } if (ResourceType != null) { ConnegWriter = graph.WriterFor(ResourceType); } }
public Envelope EnvelopeForRequestResponse <TResponse>(object request) { var messageType = typeof(TResponse).ToMessageAlias(); var reader = _serialization.ReaderFor(messageType); var envelope = new Envelope { Message = request, ReplyRequested = messageType, AcceptedContentTypes = reader.ContentTypes }; return(envelope); }
} // could be a default here public IEnumerable <Subscription> DetermineSubscriptions(SerializationGraph serialization, Type[] allTypes, Uri defaultReceiver) { var receiver = ReceiverLocation ?? defaultReceiver; return(Includes.SelectMany(allTypes.Where) .Concat(MessageTypes) .Distinct() .Select(type => { var reader = serialization.ReaderFor(type); return new Subscription(type, receiver) { Accept = reader.ContentTypes }; })); }
public Envelope EnvelopeForRequestResponse <TResponse>(object request) { var messageType = typeof(TResponse).ToMessageAlias(); _serialization.RegisterType(typeof(TResponse)); var reader = _serialization.ReaderFor(messageType); return(new Envelope { Message = request, ReplyRequested = messageType, AcceptedContentTypes = reader.ContentTypes, RequiresLocalReply = true }); }
public void scans_for_custom_readers_in_the_app_assembly() { theSerialization.ReaderFor(typeof(Message1).ToMessageAlias()) .ContentTypes.ShouldContain("green"); }