/
SitecoreJsonWebHookHandler.cs
124 lines (90 loc) · 3.67 KB
/
SitecoreJsonWebHookHandler.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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using Microsoft.AspNet.WebHooks;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace SitecoreReceiver.WebHooks
{
public class SitecoreJsonWebHookHandler : WebHookHandler
{
public SitecoreJsonWebHookHandler()
{
this.Receiver = SitecoreJsonWebHookReceiver.ReceiverName;
}
public override Task ExecuteAsync(string receiver, WebHookHandlerContext context)
{
SitecoreWebhookRoot data = null;
switch (SitecoreJsonWebHookReceiver.ContentType)
{
case "application/json":
// Get JSON from WebHook
JObject jObject = context.GetDataOrDefault<JObject>();
data = context.GetDataOrDefault<SitecoreWebhookRoot>();
data.CompleteData = jObject.ToString();
if (SessionData.SitecoreList == null) { SessionData.SitecoreList = new List<SitecoreWebhookRoot>(); }
SessionData.SitecoreList.Add(data);
break;
case "application/xml":
//to implement for xml
data.CompleteData = context.Request.Content.ToString();
if (SessionData.SitecoreList == null) { SessionData.SitecoreList = new List<SitecoreWebhookRoot>(); }
SessionData.SitecoreList.Add(data);
break;
default:
break;
}
switch (data.EventName.ToLowerInvariant())
{
case "item:deleting":
var webhookUrl = "https://hooks.slack.com/services/Tttttt/vvvvv/dfdfdsf4sWHa8E22";//this is bogus, ensure this is correct
var client = new HttpClient();
var messageString = "Item deleted by user from Sitecore; Item id: " + data.Item.Id + " Item Name: " + data.Item.Name;
var jsonString = "{\"text\": \"" + messageString + "\"}";
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
var result = client.PostAsync(webhookUrl, content).Result;
break;
case "item:deleted":
break;
case "item:added":
break;
case "item:cloneadded":
break;
case "item:copied":
break;
case "item:moved":
break;
case "item:renamed":
break;
case "item:saved":
break;
case "item:locked":
break;
case "item:unlocked":
break;
case "item:versionadded":
break;
case "item:versionremoved":
break;
case "item:templatechanged":
break;
case "item:sortorderchanged":
break;
case "publish:begin":
break;
case "publish:end":
break;
case "publish:fail":
break;
case "publish:statusupdated":
break;
default:
break;
}
// Get the action for this WebHook coming from the action query parameter in the URI
string action = context.Actions.FirstOrDefault();
return Task.FromResult(true);
}
}
}