@@ -156,6 +156,7 @@ type PayloadCommitVerification struct {
156
156
157
157
var (
158
158
_ Payloader = & CreatePayload {}
159
+ _ Payloader = & DeletePayload {}
159
160
_ Payloader = & PushPayload {}
160
161
_ Payloader = & IssuePayload {}
161
162
_ Payloader = & PullRequestPayload {}
@@ -208,6 +209,56 @@ func ParseCreateHook(raw []byte) (*CreatePayload, error) {
208
209
return hook , nil
209
210
}
210
211
212
+ // ________ .__ __
213
+ // \______ \ ____ | | _____/ |_ ____
214
+ // | | \_/ __ \| | _/ __ \ __\/ __ \
215
+ // | ` \ ___/| |_\ ___/| | \ ___/
216
+ // /_______ /\___ >____/\___ >__| \___ >
217
+ // \/ \/ \/ \/
218
+
219
+ // PusherType represents the pusher type
220
+ type PusherType string
221
+
222
+ const (
223
+ // PusherTypeUser represents the user pusher type
224
+ PusherTypeUser PusherType = "user"
225
+ )
226
+
227
+ // DeletePayload represents a payload information of a delete event.
228
+ type DeletePayload struct {
229
+ Secret string `json:"secret"`
230
+ Ref string `json:"ref"`
231
+ RefType string `json:"ref_type"`
232
+ PusherType PusherType `json:"pusher_type"`
233
+ Repo * Repository `json:"repository"`
234
+ Sender * User `json:"sender"`
235
+ }
236
+
237
+ // SetSecret FIXME
238
+ func (p * DeletePayload ) SetSecret (secret string ) {
239
+ p .Secret = secret
240
+ }
241
+
242
+ func (p * DeletePayload ) JSONPayload () ([]byte , error ) {
243
+ return json .MarshalIndent (p , "" , " " )
244
+ }
245
+
246
+ // ParseDeleteHook parses push event hook content.
247
+ func ParseDeleteHook (raw []byte ) (* DeletePayload , error ) {
248
+ hook := new (DeletePayload )
249
+ if err := json .Unmarshal (raw , hook ); err != nil {
250
+ return nil , err
251
+ }
252
+
253
+ switch {
254
+ case hook .Repo == nil :
255
+ return nil , ErrInvalidReceiveHook
256
+ case len (hook .Ref ) == 0 :
257
+ return nil , ErrInvalidReceiveHook
258
+ }
259
+ return hook , nil
260
+ }
261
+
211
262
// __________ .__
212
263
// \______ \__ __ _____| |__
213
264
// | ___/ | \/ ___/ | \
0 commit comments