本文整理汇总了C#中ODataMessageWriter.CreateODataFeedWriter方法的典型用法代码示例。如果您正苦于以下问题:C# ODataMessageWriter.CreateODataFeedWriter方法的具体用法?C# ODataMessageWriter.CreateODataFeedWriter怎么用?C# ODataMessageWriter.CreateODataFeedWriter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataMessageWriter
的用法示例。
在下文中一共展示了ODataMessageWriter.CreateODataFeedWriter方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OrderFeedTest
public void OrderFeedTest()
{
foreach (var mimeType in this.mimeTypes)
{
var settings = new ODataMessageWriterSettings();
settings.ODataUri = new ODataUri() { ServiceRoot = this.ServiceUri };
string outputWithModel = null;
string outputWithoutModel = null;
var responseMessageWithModel = new StreamResponseMessage(new MemoryStream());
responseMessageWithModel.SetHeader("Content-Type", mimeType);
using (var messageWriter = new ODataMessageWriter(responseMessageWithModel, settings, WritePayloadHelper.Model))
{
var odataWriter = messageWriter.CreateODataFeedWriter(WritePayloadHelper.OrderSet, WritePayloadHelper.OrderType);
outputWithModel = this.WriteAndVerifyOrderFeed(responseMessageWithModel, odataWriter, true, mimeType);
}
var responseMessageWithoutModel = new StreamResponseMessage(new MemoryStream());
responseMessageWithoutModel.SetHeader("Content-Type", mimeType);
using (var messageWriter = new ODataMessageWriter(responseMessageWithoutModel, settings))
{
var odataWriter = messageWriter.CreateODataFeedWriter();
outputWithoutModel = this.WriteAndVerifyOrderFeed(responseMessageWithoutModel, odataWriter, false,
mimeType);
}
WritePayloadHelper.VerifyPayloadString(outputWithModel, outputWithoutModel, mimeType);
}
}
示例2: WriteObject
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
IEdmEntitySet entitySet = writeContext.EntitySet;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
// No null check; entity type is not required for successful serialization.
IEdmEntityType entityType = _edmElementType;
ODataWriter writer = messageWriter.CreateODataFeedWriter(entitySet, entityType);
WriteObjectInline(graph, writer, writeContext);
writer.Flush();
}
示例3: WriteObject
/// <inheritdoc />
public override void WriteObject(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
IEdmEntitySetBase entitySet = writeContext.NavigationSource as IEdmEntitySetBase;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
IEdmTypeReference feedType = writeContext.GetEdmType(graph, type);
Contract.Assert(feedType != null);
IEdmEntityTypeReference entityType = GetEntityType(feedType);
ODataWriter writer = messageWriter.CreateODataFeedWriter(entitySet, entityType.EntityDefinition());
WriteObjectInline(graph, feedType, writer, writeContext);
}
示例4: WriteObject
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
ODataWriter writer = messageWriter.CreateODataFeedWriter();
WriteObjectInline(graph, writer, writeContext);
writer.Flush();
}
示例5: ConvertFeed
public void ConvertFeed(Uri relativeODataUri, Uri relativeSodaUri, JsonPayload jsonPayload,
DateTimeOffset feedUpdateTime)
{
var jsonObject = jsonPayload.JsonObject;
var entries = jsonObject.PropertyValue<JArray>("entries");
var meta = jsonObject.PropertyValue<JObject>("meta");
var view = meta.PropertyValue<JObject>("view");
IList<string> fieldsToIgnore;
var model = BuildModel(view, out fieldsToIgnore);
var entitySet = model.EntityContainers.Single().EntitySets().Single();
var settings = new ODataMessageWriterSettings
{
Indent = true,
};
using (var writer = new ODataMessageWriter(Message, settings, model))
{
var feedWriter = writer.CreateODataFeedWriter();
var feed = new ODataFeed();
feed.SetAnnotation(new AtomFeedMetadata
{
Updated = feedUpdateTime,
});
feed.Id = new Uri(ODataEndpointUri, relativeODataUri.OriginalString).OriginalString;
feedWriter.WriteStart(feed);
foreach (var entry in entries.Cast<JObject>())
{
var entryMetadata = new ODataEntry();
entryMetadata.Id = (string) ((JValue) entry.Property("id").Value).Value;
entryMetadata.TypeName = entitySet.ElementType.FullName();
entryMetadata.Properties = ConvertProperties(entry, fieldsToIgnore);
entryMetadata.SetAnnotation(new AtomEntryMetadata
{
Updated = ConvertDateTimeOffset(entry.PrimitivePropertyValue<long>("updated_at")),
Published = ConvertDateTimeOffset(entry.PrimitivePropertyValue<long>("created_at")),
});
feedWriter.WriteStart(entryMetadata);
feedWriter.WriteEnd();
}
feedWriter.WriteEnd();
}
}
示例6: CsvWriterDemo
private static void CsvWriterDemo()
{
EdmEntityType customer = new EdmEntityType("ns", "customer");
var key = customer.AddStructuralProperty("Id", EdmPrimitiveTypeKind.Int32);
customer.AddKeys(key);
customer.AddStructuralProperty("Name", EdmPrimitiveTypeKind.String);
ODataEntry entry1 = new ODataEntry()
{
Properties = new[]
{
new ODataProperty(){Name = "Id", Value = 51},
new ODataProperty(){Name = "Name", Value = "Name_A"},
}
};
ODataEntry entry2 = new ODataEntry()
{
Properties = new[]
{
new ODataProperty(){Name = "Id", Value = 52},
new ODataProperty(){Name = "Name", Value = "Name_B"},
}
};
var stream = new MemoryStream();
var message = new Message { Stream = stream };
// Set Content-Type header value
message.SetHeader("Content-Type", "text/csv");
var settings = new ODataMessageWriterSettings
{
// Set our resolver here.
MediaTypeResolver = CsvMediaTypeResolver.Instance,
DisableMessageStreamDisposal = true,
};
using (var messageWriter = new ODataMessageWriter(message, settings))
{
var writer = messageWriter.CreateODataFeedWriter(null, customer);
writer.WriteStart(new ODataFeed());
writer.WriteStart(entry1);
writer.WriteEnd();
writer.WriteStart(entry2);
writer.WriteEnd();
writer.WriteEnd();
writer.Flush();
}
stream.Seek(0, SeekOrigin.Begin);
string msg;
using (var sr = new StreamReader(stream)) { msg = sr.ReadToEnd(); }
Console.WriteLine(msg);
}
示例7: GetSampleFeedPayload
public string GetSampleFeedPayload(IEnumerable entities, IEnumerable<string> projectedProperties)
{
var message = new SimpleResponseMessage(this.StatusCode, this.ContentType);
using (var writer = new ODataMessageWriter(message, Settings))
{
var feedWriter = writer.CreateODataFeedWriter();
feedWriter.WriteStart(new ODataFeed() { Id = new Uri("http://temp.org/feed"), SerializationInfo = MySerializationInfo });
foreach (var entity in entities)
{
WriteEntry(feedWriter, entity, projectedProperties);
}
feedWriter.WriteEnd();
}
return message.GetMessageString();
}
示例8: ODataResponse
ODataResponse IODataView.CreateView()
{
var oDataResponse = new ODataResponse();
var messageWriter = new ODataMessageWriter(oDataResponse);
var entryWriter = messageWriter.CreateODataFeedWriter();
var feed = new ODataFeed() { Count = Videos.Count, Id = "Hypermedia-Learning" };
var atomFeed = feed.Atom();
atomFeed.Title = "Hypermedia API - " + PageTitle;
entryWriter.WriteStart(feed);
foreach (var video in Videos)
{
var oDataEntry = new ODataEntry() {};
var atom = oDataEntry.Atom();
atom.Title = "Video : " + video.Link.Title;
atom.Summary = video.Description;
entryWriter.WriteStart(oDataEntry);
entryWriter.WriteEnd();
}
foreach (var item in Community)
{
var oDataEntry = new ODataEntry() { };
var atom = oDataEntry.Atom();
atom.Title = "Community : " + item.Link.Title;
atom.Summary = item.Description;
entryWriter.WriteStart(oDataEntry);
entryWriter.WriteEnd();
}
entryWriter.WriteEnd();
entryWriter.Flush();
oDataResponse.GetStream().Position = 0;
return oDataResponse;
}
示例9: WriteObject
/// <summary>
/// Writes the entity collection results to the response message.
/// </summary>
/// <param name="graph">The entity collection results.</param>
/// <param name="type">The type of the entities.</param>
/// <param name="messageWriter">The message writer.</param>
/// <param name="writeContext">The writing context.</param>
public override void WriteObject(
object graph,
Type type,
ODataMessageWriter messageWriter,
ODataSerializerContext writeContext)
{
Ensure.NotNull(messageWriter, "messageWriter");
Ensure.NotNull(writeContext, "writeContext");
IEdmEntitySetBase entitySet = writeContext.NavigationSource as IEdmEntitySetBase;
if (entitySet == null)
{
throw new SerializationException(Resources.EntitySetMissingForSerialization);
}
EntityCollectionResult collectionResult = (EntityCollectionResult)graph;
IEdmTypeReference feedType = collectionResult.EdmType;
IEdmEntityTypeReference entityType = GetEntityType(feedType);
ODataWriter writer = messageWriter.CreateODataFeedWriter(entitySet, entityType.EntityDefinition());
this.WriteObjectInline(collectionResult.Query, feedType, writer, writeContext);
}
示例10: WriteAnnotationsAndValidatePayload
protected void WriteAnnotationsAndValidatePayload(Action<ODataWriter> action, ODataFormat format, string expectedPayload, bool request, bool createFeedWriter)
{
var writerSettings = new ODataMessageWriterSettings { DisableMessageStreamDisposal = true, EnableAtom = true };
writerSettings.SetContentType(format);
writerSettings.SetServiceDocumentUri(new Uri("http://www.example.com/"));
MemoryStream stream = new MemoryStream();
if (request)
{
IODataRequestMessage requestMessageToWrite = new InMemoryMessage { Method = "GET", Stream = stream };
using (var messageWriter = new ODataMessageWriter(requestMessageToWrite, writerSettings, Model))
{
ODataWriter odataWriter = createFeedWriter ? messageWriter.CreateODataFeedWriter(EntitySet, EntityType) : messageWriter.CreateODataEntryWriter(EntitySet, EntityType);
action(odataWriter);
}
}
else
{
IODataResponseMessage responseMessageToWrite = new InMemoryMessage { StatusCode = 200, Stream = stream };
using (var messageWriter = new ODataMessageWriter(responseMessageToWrite, writerSettings, Model))
{
ODataWriter odataWriter = createFeedWriter ? messageWriter.CreateODataFeedWriter(EntitySet, EntityType) : messageWriter.CreateODataEntryWriter(EntitySet, EntityType);
action(odataWriter);
}
}
stream.Position = 0;
string payload = (new StreamReader(stream)).ReadToEnd();
if (format == ODataFormat.Atom)
{
// The <updated> element is computed dynamically, so we remove it from the both the baseline and the actual payload.
payload = Regex.Replace(payload, "<updated>[^<]*</updated>", "");
expectedPayload = Regex.Replace(expectedPayload, "<updated>[^<]*</updated>", "");
}
Assert.AreEqual(expectedPayload, payload);
}
示例11: WriteObject
/// <inheritdoc />
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
IEdmEntitySet entitySet = writeContext.EntitySet;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
IEdmEntityType entityType = EntityType.EntityDefinition();
ODataWriter writer = messageWriter.CreateODataFeedWriter(entitySet, entityType);
WriteObjectInline(graph, writer, writeContext);
}
示例12: GetWriterOutputForContentTypeAndKnobValue
private string GetWriterOutputForContentTypeAndKnobValue(
string contentType,
bool autoComputePayloadMetadataInJson,
ODataItem[] itemsToWrite,
EdmModel edmModel,
IEdmEntitySetBase edmEntitySet,
EdmEntityType edmEntityType,
string selectClause = null,
string expandClause = null,
string resourcePath = null,
bool enableFullValidation = true)
{
MemoryStream outputStream = new MemoryStream();
IODataResponseMessage message = new InMemoryMessage() { Stream = outputStream };
message.SetHeader("Content-Type", contentType);
ODataMessageWriterSettings settings = new ODataMessageWriterSettings()
{
AutoComputePayloadMetadataInJson = autoComputePayloadMetadataInJson,
EnableFullValidation = enableFullValidation
};
var result = new ODataQueryOptionParser(edmModel, edmEntityType, edmEntitySet, new Dictionary<string, string> { { "$expand", expandClause }, { "$select", selectClause } }).ParseSelectAndExpand();
ODataUri odataUri = new ODataUri()
{
ServiceRoot = new Uri("http://example.org/odata.svc"),
SelectAndExpand = result
};
if (resourcePath != null)
{
Uri requestUri = new Uri("http://example.org/odata.svc/" + resourcePath);
odataUri.RequestUri = requestUri;
odataUri.Path = new ODataUriParser(edmModel, new Uri("http://example.org/odata.svc/"), requestUri).ParsePath();
}
settings.ODataUri = odataUri;
string output;
using (var messageWriter = new ODataMessageWriter(message, settings, edmModel))
{
int currentIdx = 0;
if (itemsToWrite[currentIdx] is ODataFeed)
{
ODataWriter writer = messageWriter.CreateODataFeedWriter(edmEntitySet, edmEntityType);
this.WriteFeed(writer, itemsToWrite, ref currentIdx);
}
else if (itemsToWrite[currentIdx] is ODataEntry)
{
ODataWriter writer = messageWriter.CreateODataEntryWriter(edmEntitySet, edmEntityType);
this.WriteEntry(writer, itemsToWrite, ref currentIdx);
}
else
{
Assert.True(false, "Top level item to write must be entry or feed.");
}
currentIdx.Should().Be(itemsToWrite.Length, "Invalid list of items to write.");
outputStream.Seek(0, SeekOrigin.Begin);
output = new StreamReader(outputStream).ReadToEnd();
}
return output;
}
示例13: WriteTopLevelFeed
private static void WriteTopLevelFeed(bool enableFullValidation = true)
{
Console.WriteLine("WriteTopLevelFeed, enableFullValidation:{0}", enableFullValidation);
var msg = ODataSamplesUtil.CreateMessage();
var settings = new ODataMessageWriterSettings(BaseSettings)
{
ODataUri = new ODataUri()
{
ServiceRoot = ServiceRoot
},
EnableFullValidation = enableFullValidation
};
using (var omw = new ODataMessageWriter((IODataResponseMessage)msg, settings, ExtModel.Model))
{
var writer = omw.CreateODataFeedWriter(ExtModel.PetSet);
writer.WriteStart(Feed);
writer.WriteStart(PetEntry);
writer.WriteEnd();
writer.WriteStart(FishEntry);
writer.WriteEnd();
writer.WriteEnd();
}
Console.WriteLine(ODataSamplesUtil.MessageToString(msg));
}
示例14: TestCreateODataFeedWriter_InJsonLight_WithoutEntitySetOrType_Throws
public void TestCreateODataFeedWriter_InJsonLight_WithoutEntitySetOrType_Throws()
{
// Arrange
IODataResponseMessage response = CreateResponse();
ODataMessageWriterSettings settings = CreateJsonLightSettings();
IEdmModel model = CreateModel();
using (ODataMessageWriter writer = new ODataMessageWriter(response, settings, model))
{
// Act & Assert
Assert.Throws<ODataException>(() => writer.CreateODataFeedWriter());
}
}
示例15: TestCreateODataFeedWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow
public void TestCreateODataFeedWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow()
{
// Arrange
IODataResponseMessage response = CreateResponse();
ODataMessageWriterSettings settings = CreateJsonLightSettings();
IEdmModel model = CreateModel();
IEdmEntitySet entitySet = model.EntityContainers().Single().EntitySets().First();
using (ODataMessageWriter writer = new ODataMessageWriter(response, settings, model))
{
// Act & Assert
Assert.DoesNotThrow(() => writer.CreateODataFeedWriter(entitySet));
}
}