private ParameterReaderResult RunParameterReaderTest(string payload) { var message = new InMemoryMessage(); message.Stream = new MemoryStream(Encoding.UTF8.GetBytes(payload)); message.SetHeader("Content-Type", "application/json"); var parameterReaderResult = new ParameterReaderResult(); using (var messageReader = new ODataMessageReader((IODataRequestMessage)message, null, this.model)) { var parameterReader = messageReader.CreateODataParameterReader(this.action); while (parameterReader.Read()) { switch (parameterReader.State) { case ODataParameterReaderState.Value: { parameterReaderResult.Values.Add(new KeyValuePair<string, object>(parameterReader.Name, parameterReader.Value)); break; } case ODataParameterReaderState.Collection: { var collection = new ParameterReaderCollection(); parameterReaderResult.Collections.Add(new KeyValuePair<string, ParameterReaderCollection>(parameterReader.Name, collection)); var collectionReader = parameterReader.CreateCollectionReader(); while (collectionReader.Read()) { switch (collectionReader.State) { case ODataCollectionReaderState.Value: { collection.Items.Add(collectionReader.Item); break; } } } break; } case ODataParameterReaderState.Entry: { var entryReader = parameterReader.CreateEntryReader(); var entryList = new List<ODataEntry>(); parameterReaderResult.Entries.Add(new KeyValuePair<string, IList<ODataEntry>>(parameterReader.Name, entryList)); while (entryReader.Read()) { switch (entryReader.State) { case ODataReaderState.EntryEnd: entryList.Add((ODataEntry)entryReader.Item); break; } } break; } case ODataParameterReaderState.Feed: { var entryReader = parameterReader.CreateFeedReader(); var entryList = new List<ODataEntry>(); parameterReaderResult.Entries.Add(new KeyValuePair<string, IList<ODataEntry>>(parameterReader.Name, entryList)); var feedList = new List<ODataFeed>(); parameterReaderResult.Feeds.Add(new KeyValuePair<string, IList<ODataFeed>>(parameterReader.Name, feedList)); while (entryReader.Read()) { switch (entryReader.State) { case ODataReaderState.EntryEnd: entryList.Add((ODataEntry)entryReader.Item); break; case ODataReaderState.FeedEnd: feedList.Add((ODataFeed)entryReader.Item); break; } } break; } } } } return parameterReaderResult; }
private ParameterReaderResult RunParameterReaderTest(string payload) { var message = new InMemoryMessage(); message.Stream = new MemoryStream(Encoding.UTF8.GetBytes(payload)); message.SetHeader("Content-Type", "application/json"); var parameterReaderResult = new ParameterReaderResult(); using (var messageReader = new ODataMessageReader((IODataRequestMessage)message, null, this.model)) { var parameterReader = messageReader.CreateODataParameterReader(this.action); while (parameterReader.Read()) { switch (parameterReader.State) { case ODataParameterReaderState.Value: { parameterReaderResult.Values.Add(new KeyValuePair <string, object>(parameterReader.Name, parameterReader.Value)); break; } case ODataParameterReaderState.Collection: { var collection = new ParameterReaderCollection(); parameterReaderResult.Collections.Add(new KeyValuePair <string, ParameterReaderCollection>(parameterReader.Name, collection)); var collectionReader = parameterReader.CreateCollectionReader(); while (collectionReader.Read()) { switch (collectionReader.State) { case ODataCollectionReaderState.Value: { collection.Items.Add(collectionReader.Item); break; } } } break; } case ODataParameterReaderState.Entry: { var entryReader = parameterReader.CreateEntryReader(); var entryList = new List <ODataEntry>(); parameterReaderResult.Entries.Add(new KeyValuePair <string, IList <ODataEntry> >(parameterReader.Name, entryList)); while (entryReader.Read()) { switch (entryReader.State) { case ODataReaderState.EntryEnd: entryList.Add((ODataEntry)entryReader.Item); break; } } break; } case ODataParameterReaderState.Feed: { var entryReader = parameterReader.CreateFeedReader(); var entryList = new List <ODataEntry>(); parameterReaderResult.Entries.Add(new KeyValuePair <string, IList <ODataEntry> >(parameterReader.Name, entryList)); var feedList = new List <ODataFeed>(); parameterReaderResult.Feeds.Add(new KeyValuePair <string, IList <ODataFeed> >(parameterReader.Name, feedList)); while (entryReader.Read()) { switch (entryReader.State) { case ODataReaderState.EntryEnd: entryList.Add((ODataEntry)entryReader.Item); break; case ODataReaderState.FeedEnd: feedList.Add((ODataFeed)entryReader.Item); break; } } break; } } } } return(parameterReaderResult); }