From 7f59bcf2cdc4edb39df2274138e08eea76482364 Mon Sep 17 00:00:00 2001 From: Kichiyaki Date: Wed, 5 May 2021 20:15:51 +0200 Subject: [PATCH] limit the number of orders someone can add to a query (3) --- dailyplayerstats/constants.go | 1 + dailyplayerstats/usecase/dailyplayerstats_usecase.go | 3 +++ dailytribestats/constants.go | 1 + dailytribestats/usecase/dailytribestats_usecase.go | 3 +++ ennoblement/constants.go | 1 + ennoblement/usecase/ennoblement_usecase.go | 3 +++ player/constants.go | 1 + player/usecase/player_usecase.go | 6 ++++++ playerhistory/constants.go | 1 + playerhistory/usecase/playerhistory_usecase.go | 3 +++ server/constants.go | 1 + server/usecase/server_usecase.go | 3 +++ servermap/constants.go | 5 +++++ servermap/usecase/map_usecase.go | 5 +++++ serverstats/constants.go | 1 + serverstats/usecase/serverstats_usecase.go | 3 +++ tribe/constants.go | 1 + tribe/usecase/tribe_usecase.go | 6 ++++++ tribechange/constants.go | 1 + tribechange/usecase/tribe_change_usecase.go | 3 +++ tribehistory/constants.go | 1 + tribehistory/usecase/tribehistory_usecase.go | 3 +++ version/constants.go | 1 + version/usecase/version_usecase.go | 3 +++ village/constants.go | 1 + village/usecase/village_usecase.go | 3 +++ 26 files changed, 64 insertions(+) create mode 100644 servermap/constants.go diff --git a/dailyplayerstats/constants.go b/dailyplayerstats/constants.go index a453c7d..133d769 100644 --- a/dailyplayerstats/constants.go +++ b/dailyplayerstats/constants.go @@ -2,4 +2,5 @@ package dailyplayerstats const ( FetchLimit = 1000 + MaxOrders = 3 ) diff --git a/dailyplayerstats/usecase/dailyplayerstats_usecase.go b/dailyplayerstats/usecase/dailyplayerstats_usecase.go index 4e9197f..c533285 100644 --- a/dailyplayerstats/usecase/dailyplayerstats_usecase.go +++ b/dailyplayerstats/usecase/dailyplayerstats_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg dailyplayerstats.FetchConfi if !middleware.CanExceedLimit(ctx) && (cfg.Limit > dailyplayerstats.FetchLimit || cfg.Limit <= 0) { cfg.Limit = dailyplayerstats.FetchLimit } + if len(cfg.Sort) > dailyplayerstats.MaxOrders { + cfg.Sort = cfg.Sort[0:dailyplayerstats.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/dailytribestats/constants.go b/dailytribestats/constants.go index 469e655..011e7cd 100644 --- a/dailytribestats/constants.go +++ b/dailytribestats/constants.go @@ -2,4 +2,5 @@ package dailytribestats const ( FetchLimit = 1000 + MaxOrders = 3 ) diff --git a/dailytribestats/usecase/dailytribestats_usecase.go b/dailytribestats/usecase/dailytribestats_usecase.go index 22e1429..6e3b1c0 100644 --- a/dailytribestats/usecase/dailytribestats_usecase.go +++ b/dailytribestats/usecase/dailytribestats_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg dailytribestats.FetchConfig if !middleware.CanExceedLimit(ctx) && (cfg.Limit > dailytribestats.FetchLimit || cfg.Limit <= 0) { cfg.Limit = dailytribestats.FetchLimit } + if len(cfg.Sort) > dailytribestats.MaxOrders { + cfg.Sort = cfg.Sort[0:dailytribestats.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/ennoblement/constants.go b/ennoblement/constants.go index 96afeeb..9753f4b 100644 --- a/ennoblement/constants.go +++ b/ennoblement/constants.go @@ -2,4 +2,5 @@ package ennoblement const ( FetchLimit = 200 + MaxOrders = 3 ) diff --git a/ennoblement/usecase/ennoblement_usecase.go b/ennoblement/usecase/ennoblement_usecase.go index dfae704..884b786 100644 --- a/ennoblement/usecase/ennoblement_usecase.go +++ b/ennoblement/usecase/ennoblement_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg ennoblement.FetchConfig) ([ if !middleware.CanExceedLimit(ctx) && (cfg.Limit > ennoblement.FetchLimit || cfg.Limit <= 0) { cfg.Limit = ennoblement.FetchLimit } + if len(cfg.Sort) > ennoblement.MaxOrders { + cfg.Sort = cfg.Sort[0:ennoblement.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/player/constants.go b/player/constants.go index 5f7a5cf..99c70f6 100644 --- a/player/constants.go +++ b/player/constants.go @@ -2,4 +2,5 @@ package player const ( FetchLimit = 200 + MaxOrders = 3 ) diff --git a/player/usecase/player_usecase.go b/player/usecase/player_usecase.go index 363d232..00775d3 100644 --- a/player/usecase/player_usecase.go +++ b/player/usecase/player_usecase.go @@ -25,6 +25,9 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg player.FetchConfig) ([]*twm if !middleware.CanExceedLimit(ctx) && (cfg.Limit > player.FetchLimit || cfg.Limit <= 0) { cfg.Limit = player.FetchLimit } + if len(cfg.Sort) > player.MaxOrders { + cfg.Sort = cfg.Sort[0:player.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } @@ -57,5 +60,8 @@ func (ucase *usecase) SearchPlayer(ctx context.Context, cfg player.SearchPlayerC if !middleware.CanExceedLimit(ctx) && (cfg.Limit > player.FetchLimit || cfg.Limit <= 0) { cfg.Limit = player.FetchLimit } + if len(cfg.Sort) > player.MaxOrders { + cfg.Sort = cfg.Sort[0:player.MaxOrders] + } return ucase.repo.SearchPlayer(ctx, cfg) } diff --git a/playerhistory/constants.go b/playerhistory/constants.go index d711896..34a7d07 100644 --- a/playerhistory/constants.go +++ b/playerhistory/constants.go @@ -2,4 +2,5 @@ package playerhistory const ( FetchLimit = 100 + MaxOrders = 3 ) diff --git a/playerhistory/usecase/playerhistory_usecase.go b/playerhistory/usecase/playerhistory_usecase.go index 4a60ff9..41c1979 100644 --- a/playerhistory/usecase/playerhistory_usecase.go +++ b/playerhistory/usecase/playerhistory_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg playerhistory.FetchConfig) if !middleware.CanExceedLimit(ctx) && (cfg.Limit > playerhistory.FetchLimit || cfg.Limit <= 0) { cfg.Limit = playerhistory.FetchLimit } + if len(cfg.Sort) > playerhistory.MaxOrders { + cfg.Sort = cfg.Sort[0:playerhistory.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/server/constants.go b/server/constants.go index 5fc2137..5d3585f 100644 --- a/server/constants.go +++ b/server/constants.go @@ -2,4 +2,5 @@ package server const ( FetchLimit = 100 + MaxOrders = 3 ) diff --git a/server/usecase/server_usecase.go b/server/usecase/server_usecase.go index fc1a9ab..4080847 100644 --- a/server/usecase/server_usecase.go +++ b/server/usecase/server_usecase.go @@ -24,6 +24,9 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg server.FetchConfig) ([]*twm if !middleware.CanExceedLimit(ctx) && (cfg.Limit > server.FetchLimit || cfg.Limit <= 0) { cfg.Limit = server.FetchLimit } + if len(cfg.Sort) > server.MaxOrders { + cfg.Sort = cfg.Sort[0:server.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/servermap/constants.go b/servermap/constants.go new file mode 100644 index 0000000..fbeddb7 --- /dev/null +++ b/servermap/constants.go @@ -0,0 +1,5 @@ +package servermap + +const ( + MaxMarkers = 100 +) diff --git a/servermap/usecase/map_usecase.go b/servermap/usecase/map_usecase.go index b367361..21fe625 100644 --- a/servermap/usecase/map_usecase.go +++ b/servermap/usecase/map_usecase.go @@ -210,7 +210,11 @@ func toMarkers(params []string) (map[string][]int, []int, error) { idsByColor := make(map[string][]int) var ids []int cache := make(map[int]bool) + count := 0 for _, param := range params { + if count >= servermap.MaxMarkers { + break + } //id,#color id, color, err := toMarker(param) if err != nil { @@ -222,6 +226,7 @@ func toMarkers(params []string) (map[string][]int, []int, error) { ids = append(ids, id) cache[id] = true idsByColor[color] = append(idsByColor[color], id) + count++ } return idsByColor, ids, nil } diff --git a/serverstats/constants.go b/serverstats/constants.go index 92a9474..9ea252e 100644 --- a/serverstats/constants.go +++ b/serverstats/constants.go @@ -2,4 +2,5 @@ package serverstats const ( FetchLimit = 60 + MaxOrders = 3 ) diff --git a/serverstats/usecase/serverstats_usecase.go b/serverstats/usecase/serverstats_usecase.go index 9b77bb5..b7b2f50 100644 --- a/serverstats/usecase/serverstats_usecase.go +++ b/serverstats/usecase/serverstats_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg serverstats.FetchConfig) ([ if !middleware.CanExceedLimit(ctx) && (cfg.Limit > serverstats.FetchLimit || cfg.Limit <= 0) { cfg.Limit = serverstats.FetchLimit } + if len(cfg.Sort) > serverstats.MaxOrders { + cfg.Sort = cfg.Sort[0:serverstats.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/tribe/constants.go b/tribe/constants.go index df81a6b..1061b28 100644 --- a/tribe/constants.go +++ b/tribe/constants.go @@ -2,4 +2,5 @@ package tribe const ( FetchLimit = 200 + MaxOrders = 3 ) diff --git a/tribe/usecase/tribe_usecase.go b/tribe/usecase/tribe_usecase.go index 48ea032..e6ac1ce 100644 --- a/tribe/usecase/tribe_usecase.go +++ b/tribe/usecase/tribe_usecase.go @@ -25,6 +25,9 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg tribe.FetchConfig) ([]*twmo if !middleware.CanExceedLimit(ctx) && (cfg.Limit > tribe.FetchLimit || cfg.Limit <= 0) { cfg.Limit = tribe.FetchLimit } + if len(cfg.Sort) > tribe.MaxOrders { + cfg.Sort = cfg.Sort[0:tribe.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } @@ -57,5 +60,8 @@ func (ucase *usecase) SearchTribe(ctx context.Context, cfg tribe.SearchTribeConf if !middleware.CanExceedLimit(ctx) && (cfg.Limit > tribe.FetchLimit || cfg.Limit <= 0) { cfg.Limit = tribe.FetchLimit } + if len(cfg.Sort) > tribe.MaxOrders { + cfg.Sort = cfg.Sort[0:tribe.MaxOrders] + } return ucase.repo.SearchTribe(ctx, cfg) } diff --git a/tribechange/constants.go b/tribechange/constants.go index 6eb70dc..38a2aa8 100644 --- a/tribechange/constants.go +++ b/tribechange/constants.go @@ -2,4 +2,5 @@ package tribechange const ( FetchLimit = 100 + MaxOrders = 3 ) diff --git a/tribechange/usecase/tribe_change_usecase.go b/tribechange/usecase/tribe_change_usecase.go index 30ad55f..258ab1a 100644 --- a/tribechange/usecase/tribe_change_usecase.go +++ b/tribechange/usecase/tribe_change_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg tribechange.FetchConfig) ([ if !middleware.CanExceedLimit(ctx) && (cfg.Limit > tribechange.FetchLimit || cfg.Limit <= 0) { cfg.Limit = tribechange.FetchLimit } + if len(cfg.Sort) > tribechange.MaxOrders { + cfg.Sort = cfg.Sort[0:tribechange.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/tribehistory/constants.go b/tribehistory/constants.go index 914849a..29567f1 100644 --- a/tribehistory/constants.go +++ b/tribehistory/constants.go @@ -2,4 +2,5 @@ package tribehistory const ( FetchLimit = 100 + MaxOrders = 3 ) diff --git a/tribehistory/usecase/tribehistory_usecase.go b/tribehistory/usecase/tribehistory_usecase.go index b23a2aa..70b8ba0 100644 --- a/tribehistory/usecase/tribehistory_usecase.go +++ b/tribehistory/usecase/tribehistory_usecase.go @@ -23,5 +23,8 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg tribehistory.FetchConfig) ( if !middleware.CanExceedLimit(ctx) && (cfg.Limit > tribehistory.FetchLimit || cfg.Limit <= 0) { cfg.Limit = tribehistory.FetchLimit } + if len(cfg.Sort) > tribehistory.MaxOrders { + cfg.Sort = cfg.Sort[0:tribehistory.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/version/constants.go b/version/constants.go index 5cae126..75a9052 100644 --- a/version/constants.go +++ b/version/constants.go @@ -2,4 +2,5 @@ package version const ( FetchLimit = 30 + MaxOrders = 3 ) diff --git a/version/usecase/version_usecase.go b/version/usecase/version_usecase.go index 7fe18ab..9e8e9a6 100644 --- a/version/usecase/version_usecase.go +++ b/version/usecase/version_usecase.go @@ -26,6 +26,9 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg version.FetchConfig) ([]*tw if !middleware.CanExceedLimit(ctx) && (cfg.Limit > version.FetchLimit || cfg.Limit <= 0) { cfg.Limit = version.FetchLimit } + if len(cfg.Sort) > version.MaxOrders { + cfg.Sort = cfg.Sort[0:version.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) } diff --git a/village/constants.go b/village/constants.go index 1534069..db303cb 100644 --- a/village/constants.go +++ b/village/constants.go @@ -2,4 +2,5 @@ package village const ( FetchLimit = 1000 + MaxOrders = 3 ) diff --git a/village/usecase/village_usecase.go b/village/usecase/village_usecase.go index 7ebb051..ef1835d 100644 --- a/village/usecase/village_usecase.go +++ b/village/usecase/village_usecase.go @@ -24,6 +24,9 @@ func (ucase *usecase) Fetch(ctx context.Context, cfg village.FetchConfig) ([]*tw if !middleware.CanExceedLimit(ctx) && (cfg.Limit > village.FetchLimit || cfg.Limit <= 0) { cfg.Limit = village.FetchLimit } + if len(cfg.Sort) > village.MaxOrders { + cfg.Sort = cfg.Sort[0:village.MaxOrders] + } return ucase.repo.Fetch(ctx, cfg) }