summaryrefslogtreecommitdiff
path: root/teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
committerMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
commite9c24f4af7ed56760f6db7941827d09f6db9020b (patch)
tree62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go
parent58d5e7cfda4781d8a57ec52aefd02983835c301a (diff)
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go')
-rw-r--r--teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go132
1 files changed, 132 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go b/teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go
new file mode 100644
index 0000000..53d67c0
--- /dev/null
+++ b/teleirc/matterbridge/vendor/github.com/slack-go/slack/reminders.go
@@ -0,0 +1,132 @@
+package slack
+
+import (
+ "context"
+ "net/url"
+)
+
+type Reminder struct {
+ ID string `json:"id"`
+ Creator string `json:"creator"`
+ User string `json:"user"`
+ Text string `json:"text"`
+ Recurring bool `json:"recurring"`
+ Time int `json:"time"`
+ CompleteTS int `json:"complete_ts"`
+}
+
+type reminderResp struct {
+ SlackResponse
+ Reminder Reminder `json:"reminder"`
+}
+
+type remindersResp struct {
+ SlackResponse
+ Reminders []*Reminder `json:"reminders"`
+}
+
+func (api *Client) doReminder(ctx context.Context, path string, values url.Values) (*Reminder, error) {
+ response := &reminderResp{}
+ if err := api.postMethod(ctx, path, values, response); err != nil {
+ return nil, err
+ }
+ return &response.Reminder, response.Err()
+}
+
+func (api *Client) doReminders(ctx context.Context, path string, values url.Values) ([]*Reminder, error) {
+ response := &remindersResp{}
+ if err := api.postMethod(ctx, path, values, response); err != nil {
+ return nil, err
+ }
+
+ // create an array of pointers to reminders
+ var reminders = make([]*Reminder, 0, len(response.Reminders))
+ for _, reminder := range response.Reminders {
+ reminders = append(reminders, reminder)
+ }
+
+ return reminders, response.Err()
+}
+
+// ListReminders lists all the reminders created by or for the authenticated user
+//
+// See https://api.slack.com/methods/reminders.list
+func (api *Client) ListReminders() ([]*Reminder, error) {
+ return api.ListRemindersContext(context.Background())
+}
+
+// ListRemindersContext lists all the reminders created by or for the authenticated user with a custom context
+//
+// For more details, see ListReminders documentation.
+func (api *Client) ListRemindersContext(ctx context.Context) ([]*Reminder, error) {
+ values := url.Values{
+ "token": {api.token},
+ }
+ return api.doReminders(ctx, "reminders.list", values)
+}
+
+// AddChannelReminder adds a reminder for a channel.
+//
+// See https://api.slack.com/methods/reminders.add (NOTE: the ability to set
+// reminders on a channel is currently undocumented but has been tested to
+// work)
+func (api *Client) AddChannelReminder(channelID, text, time string) (*Reminder, error) {
+ return api.AddChannelReminderContext(context.Background(), channelID, text, time)
+}
+
+// AddChannelReminderContext adds a reminder for a channel with a custom context
+//
+// For more details, see AddChannelReminder documentation.
+func (api *Client) AddChannelReminderContext(ctx context.Context, channelID, text, time string) (*Reminder, error) {
+ values := url.Values{
+ "token": {api.token},
+ "text": {text},
+ "time": {time},
+ "channel": {channelID},
+ }
+ return api.doReminder(ctx, "reminders.add", values)
+}
+
+// AddUserReminder adds a reminder for a user.
+//
+// See https://api.slack.com/methods/reminders.add (NOTE: the ability to set
+// reminders on a channel is currently undocumented but has been tested to
+// work)
+func (api *Client) AddUserReminder(userID, text, time string) (*Reminder, error) {
+ return api.AddUserReminderContext(context.Background(), userID, text, time)
+}
+
+// AddUserReminderContext adds a reminder for a user with a custom context
+//
+// For more details, see AddUserReminder documentation.
+func (api *Client) AddUserReminderContext(ctx context.Context, userID, text, time string) (*Reminder, error) {
+ values := url.Values{
+ "token": {api.token},
+ "text": {text},
+ "time": {time},
+ "user": {userID},
+ }
+ return api.doReminder(ctx, "reminders.add", values)
+}
+
+// DeleteReminder deletes an existing reminder.
+//
+// See https://api.slack.com/methods/reminders.delete
+func (api *Client) DeleteReminder(id string) error {
+ return api.DeleteReminderContext(context.Background(), id)
+}
+
+// DeleteReminderContext deletes an existing reminder with a custom context
+//
+// For more details, see DeleteReminder documentation.
+func (api *Client) DeleteReminderContext(ctx context.Context, id string) error {
+ values := url.Values{
+ "token": {api.token},
+ "reminder": {id},
+ }
+ response := &SlackResponse{}
+ if err := api.postMethod(ctx, "reminders.delete", values, response); err != nil {
+ return err
+ }
+ return response.Err()
+}