github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/feed/domain/service/service.go (about) 1 package service 2 3 import ( 4 "github.com/k0marov/go-socnet/core/abstract/recommendable" 5 "github.com/k0marov/go-socnet/core/general/client_errors" 6 "github.com/k0marov/go-socnet/core/general/core_values" 7 "strconv" 8 ) 9 10 type FeedGetter = func(count string, caller core_values.UserId) ([]string, error) 11 12 const DefaultCount = 5 13 const MaxCount = 50 14 15 func convertCount(countStr string) (count int, ok bool) { 16 if countStr == "" { 17 return DefaultCount, true 18 } 19 countConv, err := strconv.Atoi(countStr) 20 return countConv, err == nil 21 } 22 23 func NewFeedGetter(getFeed recommendable.RecsGetter) FeedGetter { 24 return func(countStr string, caller core_values.UserId) ([]string, error) { 25 count, ok := convertCount(countStr) 26 if !ok { 27 return []string{}, client_errors.NonIntegerCount 28 } 29 if count > MaxCount { 30 return []string{}, client_errors.TooBigCount 31 } 32 return getFeed(caller, count) 33 } 34 }