mirror of
https://git.freesoftwareextremist.com/bloat
synced 2024-11-09 16:14:11 +00:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package mastodon
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type Filter struct {
|
|
ID string `json:"id"`
|
|
Phrase string `json:"phrase"`
|
|
Context []string `json:"context"`
|
|
WholeWord bool `json:"whole_word"`
|
|
ExpiresAt *time.Time `json:"expires_at"`
|
|
Irreversible bool `json:"irreversible"`
|
|
}
|
|
|
|
func (c *Client) GetFilters(ctx context.Context) ([]*Filter, error) {
|
|
var filters []*Filter
|
|
err := c.doAPI(ctx, http.MethodGet, "/api/v1/filters", nil, &filters, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return filters, nil
|
|
}
|
|
|
|
func (c *Client) AddFilter(ctx context.Context, phrase string, context []string, irreversible bool, wholeWord bool, expiresIn *time.Time) error {
|
|
params := url.Values{}
|
|
params.Set("phrase", phrase)
|
|
for i := range context {
|
|
params.Add("context[]", context[i])
|
|
}
|
|
params.Set("irreversible", strconv.FormatBool(irreversible))
|
|
params.Set("whole_word", strconv.FormatBool(wholeWord))
|
|
if expiresIn != nil {
|
|
params.Set("expires_in", expiresIn.Format(time.RFC3339))
|
|
}
|
|
err := c.doAPI(ctx, http.MethodPost, "/api/v1/filters", params, nil, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Client) RemoveFilter(ctx context.Context, id string) error {
|
|
return c.doAPI(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/filters/%s", id), nil, nil, nil)
|
|
}
|