-
Notifications
You must be signed in to change notification settings - Fork 98
/
Copy pathWebhookApplication.cs
82 lines (68 loc) · 3.41 KB
/
WebhookApplication.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Line.Messaging.Webhooks
{
/// <summary>
/// Inherit this class to implement LINE Bot. Then override each event handler.
/// </summary>
public abstract class WebhookApplication
{
public async Task RunAsync(IEnumerable<WebhookEvent> events)
{
foreach (var ev in events)
{
switch (ev)
{
case MessageEvent message:
await OnMessageAsync(message).ConfigureAwait(false);
break;
case JoinEvent join:
await OnJoinAsync(join).ConfigureAwait(false);
break;
case LeaveEvent leave:
await OnLeaveAsync(leave).ConfigureAwait(false);
break;
case FollowEvent follow:
await OnFollowAsync(follow).ConfigureAwait(false);
break;
case UnfollowEvent unFollow:
await OnUnfollowAsync(unFollow).ConfigureAwait(false);
break;
case PostbackEvent postback:
await OnPostbackAsync(postback).ConfigureAwait(false);
break;
case BeaconEvent beacon:
await OnBeaconAsync(beacon).ConfigureAwait(false);
break;
case AccountLinkEvent accountLink:
await OnAccountLinkAsync(accountLink).ConfigureAwait(false);
break;
case MemberJoinEvent memberJoin:
await OnMemberJoinAsync(memberJoin).ConfigureAwait(false);
break;
case MemberLeaveEvent memberLeave:
await OnMemberLeaveAsync(memberLeave).ConfigureAwait(false);
break;
case DeviceLinkEvent deviceLink:
await OnDeviceLinkAsync(deviceLink).ConfigureAwait(false);
break;
case DeviceUnlinkEvent deviceUnlink:
await OnDeviceUnlinkAsync(deviceUnlink).ConfigureAwait(false);
break;
}
}
}
protected virtual Task OnMessageAsync(MessageEvent ev) => Task.CompletedTask;
protected virtual Task OnJoinAsync(JoinEvent ev) => Task.CompletedTask;
protected virtual Task OnLeaveAsync(LeaveEvent ev) => Task.CompletedTask;
protected virtual Task OnFollowAsync(FollowEvent ev) => Task.CompletedTask;
protected virtual Task OnUnfollowAsync(UnfollowEvent ev) => Task.CompletedTask;
protected virtual Task OnBeaconAsync(BeaconEvent ev) => Task.CompletedTask;
protected virtual Task OnPostbackAsync(PostbackEvent ev) => Task.CompletedTask;
protected virtual Task OnAccountLinkAsync(AccountLinkEvent ev) => Task.CompletedTask;
protected virtual Task OnMemberJoinAsync(MemberJoinEvent ev) => Task.CompletedTask;
protected virtual Task OnMemberLeaveAsync(MemberLeaveEvent ev) => Task.CompletedTask;
protected virtual Task OnDeviceLinkAsync(DeviceLinkEvent ev) => Task.CompletedTask;
protected virtual Task OnDeviceUnlinkAsync(DeviceUnlinkEvent ev) => Task.CompletedTask;
}
}