1
+ using System . Net ;
2
+ using System . Threading . Tasks ;
3
+ using SparkPost . RequestSenders ;
4
+
5
+ namespace SparkPost
6
+ {
7
+ public interface IRelayWebhooks
8
+ {
9
+ Task < ListRelayWebhookResponse > List ( object query = null ) ;
10
+ Task < Response > Create ( RelayWebhook webhook ) ;
11
+ Task < RetrieveRelayWebhookResponse > Retrieve ( string id ) ;
12
+ Task < Response > Update ( RelayWebhook relayWebhook ) ;
13
+ Task < bool > Delete ( string id ) ;
14
+ }
15
+
16
+ public class RelayWebhooks : IRelayWebhooks
17
+ {
18
+ private readonly IClient client ;
19
+ private readonly IDataMapper dataMapper ;
20
+ private readonly IRequestSender requestSender ;
21
+
22
+ public RelayWebhooks ( IClient client , IRequestSender requestSender , IDataMapper dataMapper )
23
+ {
24
+ this . client = client ;
25
+ this . requestSender = requestSender ;
26
+ this . dataMapper = dataMapper ;
27
+ }
28
+
29
+ public async Task < ListRelayWebhookResponse > List ( object query = null )
30
+ {
31
+ if ( query == null ) query = new { } ;
32
+ var request = new Request
33
+ {
34
+ Url = $ "/api/{ client . Version } /relay-webhooks",
35
+ Method = "GET" ,
36
+ Data = query
37
+ } ;
38
+
39
+ var response = await requestSender . Send ( request ) ;
40
+ if ( response . StatusCode != HttpStatusCode . OK ) throw new ResponseException ( response ) ;
41
+
42
+ return ListRelayWebhookResponse . CreateFromResponse ( response ) ;
43
+ }
44
+
45
+ public async Task < RetrieveRelayWebhookResponse > Retrieve ( string id )
46
+ {
47
+ var request = new Request
48
+ {
49
+ Url = $ "/api/{ client . Version } /relay-webhooks/{ id } ",
50
+ Method = "GET"
51
+ } ;
52
+
53
+ var response = await requestSender . Send ( request ) ;
54
+ if ( response . StatusCode != HttpStatusCode . OK ) throw new ResponseException ( response ) ;
55
+
56
+ return RetrieveRelayWebhookResponse . CreateFromResponse ( response ) ;
57
+ }
58
+
59
+ public async Task < Response > Create ( RelayWebhook relayWebhook )
60
+ {
61
+ var request = new Request
62
+ {
63
+ Url = $ "api/{ client . Version } /relay-webhooks",
64
+ Method = "POST" ,
65
+ Data = dataMapper . ToDictionary ( relayWebhook )
66
+ } ;
67
+
68
+ var response = await requestSender . Send ( request ) ;
69
+ if ( response . StatusCode != HttpStatusCode . OK ) throw new ResponseException ( response ) ;
70
+
71
+ var createWebhookResponse = new Response ( ) ;
72
+ LeftRight . SetValuesToMatch ( createWebhookResponse , response ) ;
73
+ return createWebhookResponse ;
74
+ }
75
+
76
+ public async Task < Response > Update ( RelayWebhook relayWebhook )
77
+ {
78
+ var request = new Request
79
+ {
80
+ Url = $ "api/{ client . Version } /relay-webhooks/{ relayWebhook . Id } ",
81
+ Method = "PUT" ,
82
+ Data = dataMapper . ToDictionary ( relayWebhook )
83
+ } ;
84
+
85
+ var response = await requestSender . Send ( request ) ;
86
+ if ( response . StatusCode != HttpStatusCode . OK ) throw new ResponseException ( response ) ;
87
+
88
+ var createWebhookResponse = new Response ( ) ;
89
+ LeftRight . SetValuesToMatch ( createWebhookResponse , response ) ;
90
+ return createWebhookResponse ;
91
+ }
92
+
93
+ public async Task < bool > Delete ( string id )
94
+ {
95
+ var request = new Request
96
+ {
97
+ Url = $ "/api/{ client . Version } /relay-webhooks/{ id } ",
98
+ Method = "DELETE"
99
+ } ;
100
+
101
+ var response = await requestSender . Send ( request ) ;
102
+ return response . StatusCode == HttpStatusCode . OK ;
103
+ }
104
+ }
105
+ }
0 commit comments