Skip to content

Commit

Permalink
Merge pull request #6 from Azure-Samples/cloudevents
Browse files Browse the repository at this point in the history
Cloudevents
  • Loading branch information
dbarkol authored Nov 19, 2019
2 parents 14c44ec + a3ed88e commit 1d3f41f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 21 deletions.
32 changes: 23 additions & 9 deletions viewer/Controllers/UpdatesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,21 @@ public UpdatesController(IHubContext<GridEventsHub> gridEventsHubContext)

#region Public Methods

[HttpOptions]
public async Task<IActionResult> Options()
{
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var webhookRequestOrigin = HttpContext.Request.Headers["WebHook-Request-Origin"].FirstOrDefault();
var webhookRequestCallback = HttpContext.Request.Headers["WebHook-Request-Callback"];
var webhookRequestRate = HttpContext.Request.Headers["WebHook-Request-Rate"];
HttpContext.Response.Headers.Add("WebHook-Allowed-Rate", "*");
HttpContext.Response.Headers.Add("WebHook-Allowed-Origin", webhookRequestOrigin);
}

return Ok();
}

[HttpPost]
public async Task<IActionResult> Post()
{
Expand Down Expand Up @@ -122,16 +137,15 @@ await this._hubContext.Clients.All.SendAsync(
private async Task<IActionResult> HandleCloudEvent(string jsonContent)
{
var details = JsonConvert.DeserializeObject<CloudEvent<dynamic>>(jsonContent);
var eventData = JObject.Parse(jsonContent);

// CloudEvents schema and mapping to
// Event Grid: https://docs.microsoft.com/en-us/azure/event-grid/cloudevents-schema
await this._hubContext.Clients.All.SendAsync(
"gridupdate",
details.EventId,
details.EventType,
details.Source,
details.EventTime,
jsonContent
details.Id,
details.Type,
details.Subject,
details.Time,
eventData.ToString()
);

return Ok();
Expand All @@ -147,8 +161,8 @@ private static bool IsCloudEvent(string jsonContent)
// Attempt to read one JSON object.
var eventData = JObject.Parse(jsonContent);

// Check for the cloud events version property.
var version = eventData["cloudEventsVersion"].Value<string>();
// Check for the spec version property.
var version = eventData["specversion"].Value<string>();
if (!string.IsNullOrEmpty(version)) return true;
}
catch (Exception e)
Expand Down
26 changes: 14 additions & 12 deletions viewer/Models/CloudEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,27 @@

namespace viewer.Models
{
// Reference: https://github.com/cloudevents/spec/tree/v1.0-rc1

public class CloudEvent<T> where T : class
{
[JsonProperty("eventID")]
public string EventId { get; set; }

[JsonProperty("cloudEventsVersion")]
public string CloudEventVersion { get; set; }

[JsonProperty("eventType")]
public string EventType { get; set; }
[JsonProperty("specversion")]
public string SpecVersion { get; set; }

[JsonProperty("eventTypeVersion")]
public string EventTypeVersion { get; set; }
[JsonProperty("type")]
public string Type { get; set; }

[JsonProperty("source")]
public string Source { get; set; }

[JsonProperty("eventTime")]
public string EventTime { get; set; }
[JsonProperty("subject")]
public string Subject { get; set; }

[JsonProperty("id")]
public string Id { get; set; }

[JsonProperty("time")]
public string Time { get; set; }

[JsonProperty("data")]
public T Data { get; set; }
Expand Down

0 comments on commit 1d3f41f

Please sign in to comment.