1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2025-06-11 07:14:43 +02:00

JSON API errors

This commit is contained in:
Philipp Heckel 2021-12-25 15:15:05 +01:00
parent 020c058805
commit 7a23779d07
3 changed files with 66 additions and 35 deletions

View file

@ -1,6 +1,7 @@
package server
import (
"errors"
"golang.org/x/time/rate"
"heckel.io/ntfy/util"
"sync"
@ -14,6 +15,10 @@ const (
visitorExpungeAfter = 24 * time.Hour
)
var (
errVisitorLimitReached = errors.New("limit reached")
)
// visitor represents an API user, and its associated rate.Limiter used for rate limiting
type visitor struct {
config *Config
@ -42,23 +47,23 @@ func (v *visitor) IP() string {
func (v *visitor) RequestAllowed() error {
if !v.requests.Allow() {
return errHTTPTooManyRequests
return errVisitorLimitReached
}
return nil
}
func (v *visitor) EmailAllowed() error {
if !v.emails.Allow() {
return errHTTPTooManyRequests
return errVisitorLimitReached
}
return nil
}
func (v *visitor) AddSubscription() error {
func (v *visitor) SubscriptionAllowed() error {
v.mu.Lock()
defer v.mu.Unlock()
if err := v.subscriptions.Add(1); err != nil {
return errHTTPTooManyRequests
return errVisitorLimitReached
}
return nil
}