Skip to content

Instantly share code, notes, and snippets.

Created August 14, 2018 04:16
What would you like to do?
<base />
<!-- Limit the number of calls from an IP address -->
<rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.IpAddress)" />
<!-- Publish an event to grid -->
<send-one-way-request mode="new">
<set-header name="aeg-sas-key" exists-action="override">
<set-header name="Content-Type" exists-action="override">
// Parse the request body
var requestBody = context.Request.Body.As<string>();
JObject json = JObject.Parse(requestBody);
// Add the customer ID, order details and
// request ID of the API call to the event
// data property.
var data = json["order"];
data["customerId"] = json["customerId"];
data["requestId"] = context.RequestId;
// Set the event type based off of the quantity ordered
var quantity = (int) json["order"]["quantity"];
var eventType = quantity > 50 ? "Contoso.Orders.Large" : "Contoso.Orders.Normal";
// Events are sent in an array
var events = new JArray();
// Initialize the event and add it to the array
var newOrderEvent = new JObject();
newOrderEvent.Add("Data", data);
newOrderEvent.Add("Subject", "contoso/newOrder");
newOrderEvent.Add("EventType", eventType);
newOrderEvent.Add("Id", Guid.NewGuid().ToString());
newOrderEvent.Add("EventTime", DateTime.UtcNow.ToString());
// Format to a string and ready to go!
return events.ToString(Newtonsoft.Json.Formatting.None);
<set-status code="200" reason="OK" />
<base />
<base />
<base />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment