123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package server
- import (
- "heckel.io/ntfy/util"
- "net/http"
- )
- func (s *Server) limitRequests(next handleFunc) handleFunc {
- return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if util.ContainsIP(s.config.VisitorRequestExemptIPAddrs, v.ip) {
- return next(w, r, v)
- } else if !v.RequestAllowed() {
- return errHTTPTooManyRequestsLimitRequests
- }
- return next(w, r, v)
- }
- }
- func (s *Server) ensureWebEnabled(next handleFunc) handleFunc {
- return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if !s.config.EnableWeb {
- return errHTTPNotFound
- }
- return next(w, r, v)
- }
- }
- func (s *Server) ensureUserManager(next handleFunc) handleFunc {
- return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if s.userManager == nil {
- return errHTTPNotFound
- }
- return next(w, r, v)
- }
- }
- func (s *Server) ensureUser(next handleFunc) handleFunc {
- return s.ensureUserManager(func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if v.User() == nil {
- return errHTTPUnauthorized
- }
- return next(w, r, v)
- })
- }
- func (s *Server) ensurePaymentsEnabled(next handleFunc) handleFunc {
- return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if s.config.StripeSecretKey == "" || s.stripe == nil {
- return errHTTPNotFound
- }
- return next(w, r, v)
- }
- }
- func (s *Server) ensureStripeCustomer(next handleFunc) handleFunc {
- return s.ensureUser(func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- if v.User().Billing.StripeCustomerID == "" {
- return errHTTPBadRequestNotAPaidUser
- }
- return next(w, r, v)
- })
- }
- func (s *Server) withAccountSync(next handleFunc) handleFunc {
- return func(w http.ResponseWriter, r *http.Request, v *visitor) error {
- err := next(w, r, v)
- if err == nil {
- s.publishSyncEventAsync(v)
- }
- return err
- }
- }
|