-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathWebhookManager.php
More file actions
129 lines (117 loc) · 4.71 KB
/
Copy pathWebhookManager.php
File metadata and controls
129 lines (117 loc) · 4.71 KB
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
125
126
127
128
129
<?php
namespace SimpleSquid\Vend\Actions;
use SimpleSquid\Vend\Resources\ZeroDotNine\Webhook;
use SimpleSquid\Vend\Resources\ZeroDotNine\WebhookCollection;
class WebhookManager
{
use ManagesResources;
/**
* Create a webhook.
* Creates and returns a new webhook.
*
* @param Webhook|array $webhook
*
* @return Webhook
* @throws \SimpleSquid\Vend\Exceptions\AuthorisationException
* @throws \SimpleSquid\Vend\Exceptions\BadRequestException
* @throws \SimpleSquid\Vend\Exceptions\NotFoundException
* @throws \SimpleSquid\Vend\Exceptions\RateLimitException
* @throws \SimpleSquid\Vend\Exceptions\RequestException
* @throws \SimpleSquid\Vend\Exceptions\TokenExpiredException
* @throws \SimpleSquid\Vend\Exceptions\UnauthorisedException
* @throws \SimpleSquid\Vend\Exceptions\UnknownException
*/
public function create($webhook): Webhook
{
if ($webhook instanceof Webhook) {
$webhook = $webhook->toArray();
}
$response = $this->vend->post('webhooks', ['data' => json_encode($webhook)], 'form_params');
return new Webhook($response['data']);
}
/**
* Delete a webhook by ID.
* Deletes the webhook with the given ID.
*
* @param string $id
*
* @return bool
* @throws \SimpleSquid\Vend\Exceptions\AuthorisationException
* @throws \SimpleSquid\Vend\Exceptions\BadRequestException
* @throws \SimpleSquid\Vend\Exceptions\NotFoundException
* @throws \SimpleSquid\Vend\Exceptions\RateLimitException
* @throws \SimpleSquid\Vend\Exceptions\RequestException
* @throws \SimpleSquid\Vend\Exceptions\TokenExpiredException
* @throws \SimpleSquid\Vend\Exceptions\UnauthorisedException
* @throws \SimpleSquid\Vend\Exceptions\UnknownException
*/
public function delete(string $id): bool
{
return $this->deleteResource("webhooks/$id");
}
/**
* Get a single webhook by ID.
* Returns a single webhooks with the given ID.
*
* @param string $id
*
* @return Webhook
* @throws \SimpleSquid\Vend\Exceptions\AuthorisationException
* @throws \SimpleSquid\Vend\Exceptions\BadRequestException
* @throws \SimpleSquid\Vend\Exceptions\NotFoundException
* @throws \SimpleSquid\Vend\Exceptions\RateLimitException
* @throws \SimpleSquid\Vend\Exceptions\RequestException
* @throws \SimpleSquid\Vend\Exceptions\TokenExpiredException
* @throws \SimpleSquid\Vend\Exceptions\UnauthorisedException
* @throws \SimpleSquid\Vend\Exceptions\UnknownException
*/
public function find(string $id): Webhook
{
return $this->single(Webhook::class, "webhooks/$id", 'root');
}
/**
* List webhooks.
* Returns a list of webhooks.
* NOTE: This endpoint will only return webhooks created by the application which is making the request.*.
*
* @return WebhookCollection
* @throws \SimpleSquid\Vend\Exceptions\AuthorisationException
* @throws \SimpleSquid\Vend\Exceptions\BadRequestException
* @throws \SimpleSquid\Vend\Exceptions\NotFoundException
* @throws \SimpleSquid\Vend\Exceptions\RateLimitException
* @throws \SimpleSquid\Vend\Exceptions\RequestException
* @throws \SimpleSquid\Vend\Exceptions\TokenExpiredException
* @throws \SimpleSquid\Vend\Exceptions\UnauthorisedException
* @throws \SimpleSquid\Vend\Exceptions\UnknownException
*/
public function get(): WebhookCollection
{
return $this->collection(WebhookCollection::class, 'webhooks', [], 'root');
}
/**
* Update a webhook by ID.
* Updates a webhook with the given `id`.
* __NOTE:__ The `Content-Type` header for this request should be set to `application/x-www-form-urlencoded`.
*
* @param string $id The ID of the webhook to be updated.
* @param Webhook $webhook
*
* @return Webhook
* @throws \SimpleSquid\Vend\Exceptions\AuthorisationException
* @throws \SimpleSquid\Vend\Exceptions\BadRequestException
* @throws \SimpleSquid\Vend\Exceptions\NotFoundException
* @throws \SimpleSquid\Vend\Exceptions\RateLimitException
* @throws \SimpleSquid\Vend\Exceptions\RequestException
* @throws \SimpleSquid\Vend\Exceptions\TokenExpiredException
* @throws \SimpleSquid\Vend\Exceptions\UnauthorisedException
* @throws \SimpleSquid\Vend\Exceptions\UnknownException
*/
public function update(string $id, $webhook): Webhook
{
if ($webhook instanceof Webhook) {
$webhook = $webhook->toArray();
}
$response = $this->vend->post("webhooks/$id", ['data' => json_encode($webhook)], 'form_params');
return new Webhook($response['data']);
}
}