public async Task HandleEventAsync(WebhookEventBase ev) { if (ev == null) { throw new ArgumentNullException(nameof(ev)); } switch (ev.Type) { case EventType.Message: await HandleMessage((MessageEvent)ev) .ConfigureAwait(false); return; case EventType.Follow: await HandleFollow((FollowEvent)ev) .ConfigureAwait(false); return; case EventType.Unfollow: await HandleUnfollow((UnfollowEvent)ev) .ConfigureAwait(false); return; case EventType.Join: await HandleJoin((JoinEvent)ev) .ConfigureAwait(false); return; case EventType.Leave: await HandleLeave((LeaveEvent)ev) .ConfigureAwait(false); return; case EventType.Postback: await HandlePostback((PostbackEvent)ev) .ConfigureAwait(false); return; case EventType.Beacon: await HandleBeacon((BeaconEvent)ev) .ConfigureAwait(false); return; default: throw new LineException($"unknown event type: {ev.Type}"); } }
private void AddUnmappedPropertiesAsUnique(WebhookEventBase webhookEvent, JObject jObject) { var dict = jObject.ToObject <Dictionary <string, object> >(); foreach (var o in dict) { if (KnownProperties.Contains(o.Key)) { continue; } webhookEvent.UniqueParameters.Add(o.Key, o.Value == null ? null : o.Value.ToString()); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jsonObject = JObject.Load(reader); //serialise based on the event type JToken eventName = null; jsonObject.TryGetValue("event", StringComparison.CurrentCultureIgnoreCase, out eventName); if (!TypeMapping.ContainsKey(eventName.ToString())) { throw new NotImplementedException(string.Format("Event {0} is not implemented yet.", eventName)); } Type type = TypeMapping[eventName.ToString()]; WebhookEventBase webhookItem = (WebhookEventBase)jsonObject.ToObject(type, serializer); return(webhookItem); }