1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-09-12 13:16:42 +00:00
arikawa/api/webhook.go

87 lines
2.3 KiB
Go
Raw Normal View History

2020-01-19 02:27:30 +00:00
package api
import (
"github.com/diamondburned/arikawa/discord"
"github.com/diamondburned/arikawa/utils/httputil"
2020-01-19 02:27:30 +00:00
)
var EndpointWebhooks = Endpoint + "webhooks/"
2020-01-19 02:27:30 +00:00
// CreateWebhook creates a new webhook; avatar hash is optional. Requires
// MANAGE_WEBHOOKS.
func (c *Client) CreateWebhook(
channelID discord.Snowflake,
name string, avatar discord.Hash) (*discord.Webhook, error) {
var param struct {
Name string `json:"name"`
Avatar discord.Hash `json:"avatar"`
}
param.Name = name
param.Avatar = avatar
var w *discord.Webhook
return w, c.RequestJSON(
&w, "POST",
EndpointChannels+channelID.String()+"/webhooks",
httputil.WithJSONBody(param),
2020-01-19 02:27:30 +00:00
)
}
// Webhooks requires MANAGE_WEBHOOKS.
2020-04-19 21:53:53 +00:00
func (c *Client) Webhooks(guildID discord.Snowflake) ([]discord.Webhook, error) {
2020-01-19 02:27:30 +00:00
var ws []discord.Webhook
2020-04-19 21:53:53 +00:00
return ws, c.RequestJSON(&ws, "GET", EndpointGuilds+guildID.String()+"/webhooks")
2020-01-19 02:27:30 +00:00
}
2020-04-19 21:53:53 +00:00
func (c *Client) Webhook(webhookID discord.Snowflake) (*discord.Webhook, error) {
2020-01-19 02:27:30 +00:00
var w *discord.Webhook
2020-04-19 21:53:53 +00:00
return w, c.RequestJSON(&w, "GET", EndpointWebhooks+webhookID.String())
2020-01-19 02:27:30 +00:00
}
func (c *Client) WebhookWithToken(
webhookID discord.Snowflake, token string) (*discord.Webhook, error) {
var w *discord.Webhook
2020-04-19 21:53:53 +00:00
return w, c.RequestJSON(&w, "GET", EndpointWebhooks+webhookID.String()+"/"+token)
2020-01-19 02:27:30 +00:00
}
type ModifyWebhookData struct {
Name string `json:"name,omitempty"`
Avatar discord.Hash `json:"avatar,omitempty"` // TODO: clear avatar how?
ChannelID discord.Snowflake `json:"channel_id,omitempty"`
}
func (c *Client) ModifyWebhook(
webhookID discord.Snowflake,
data ModifyWebhookData) (*discord.Webhook, error) {
var w *discord.Webhook
2020-05-12 00:16:08 +00:00
return w, c.RequestJSON(
&w, "PATCH",
EndpointWebhooks+webhookID.String(),
httputil.WithJSONBody(data),
)
2020-01-19 02:27:30 +00:00
}
func (c *Client) ModifyWebhookWithToken(
webhookID discord.Snowflake,
data ModifyWebhookData, token string) (*discord.Webhook, error) {
var w *discord.Webhook
2020-05-12 00:16:08 +00:00
return w, c.RequestJSON(
&w, "PATCH",
EndpointWebhooks+webhookID.String()+"/"+token,
httputil.WithJSONBody(data),
)
2020-01-19 02:27:30 +00:00
}
func (c *Client) DeleteWebhook(webhookID discord.Snowflake) error {
return c.FastRequest("DELETE", EndpointWebhooks+webhookID.String())
}
2020-04-19 21:53:53 +00:00
func (c *Client) DeleteWebhookWithToken(webhookID discord.Snowflake, token string) error {
return c.FastRequest("DELETE", EndpointWebhooks+webhookID.String()+"/"+token)
2020-01-19 02:27:30 +00:00
}