From c08c2340d9de56356dac418f8b74be6f0822281f Mon Sep 17 00:00:00 2001 From: uvorbs Date: Thu, 28 Mar 2024 16:31:49 +0200 Subject: [PATCH 1/3] avoid size price zero in rest level --- transport/rest/create_order.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/transport/rest/create_order.go b/transport/rest/create_order.go index 1453d3b3..11f58041 100644 --- a/transport/rest/create_order.go +++ b/transport/rest/create_order.go @@ -190,7 +190,7 @@ func parseFields(_ http.ResponseWriter, input pFInput) (*pfParsed, error) { return nil, fmt.Errorf("'price' is not a valid number format") } - if decPrice.IsNegative() { + if decPrice.IsZero() || decPrice.IsNegative() { return nil, fmt.Errorf("'price' must be positive") } @@ -205,7 +205,7 @@ func parseFields(_ http.ResponseWriter, input pFInput) (*pfParsed, error) { return nil, fmt.Errorf("'size' is not a valid number format") } - if decSize.IsNegative() { + if decSize.IsZero() || decSize.IsNegative() { return nil, fmt.Errorf("'size' must be positive") } From dc27793bc4cf9ba2cbee8286d0920e437907a982 Mon Sep 17 00:00:00 2001 From: uvorbs Date: Thu, 28 Mar 2024 16:32:08 +0200 Subject: [PATCH 2/3] avoid zero size or price on order level --- service/create_order.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/service/create_order.go b/service/create_order.go index f5b1a80d..2151e549 100644 --- a/service/create_order.go +++ b/service/create_order.go @@ -58,6 +58,16 @@ func (s *Service) createNewOrder(ctx context.Context, input CreateOrderInput, us logctx.Debug(ctx, "creating new order", logger.String("orderId", orderId.String()), logger.String("clientOrderId", input.ClientOrderID.String())) + if input.Price.IsZero() { + logctx.Warn(ctx, "price zero is now allowed", logger.String("orderId", orderId.String()), logger.String("price", input.Price.String())) + return models.Order{}, models.ErrInvalidInput + } + + if input.Size.IsZero() { + logctx.Warn(ctx, "size zero is now allowed", logger.String("orderId", orderId.String()), logger.String("size", input.Size.String())) + return models.Order{}, models.ErrInvalidInput + } + order := models.Order{ Id: orderId, ClientOId: input.ClientOrderID, From 39249049a49263a9293b13a917e14cdc41c068b5 Mon Sep 17 00:00:00 2001 From: uvorbs Date: Thu, 28 Mar 2024 16:33:32 +0200 Subject: [PATCH 3/3] ddress negative size and price --- service/create_order.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/service/create_order.go b/service/create_order.go index 2151e549..297af432 100644 --- a/service/create_order.go +++ b/service/create_order.go @@ -58,13 +58,13 @@ func (s *Service) createNewOrder(ctx context.Context, input CreateOrderInput, us logctx.Debug(ctx, "creating new order", logger.String("orderId", orderId.String()), logger.String("clientOrderId", input.ClientOrderID.String())) - if input.Price.IsZero() { - logctx.Warn(ctx, "price zero is now allowed", logger.String("orderId", orderId.String()), logger.String("price", input.Price.String())) + if input.Price.IsZero() || input.Price.IsNegative() { + logctx.Warn(ctx, "price has to be positive", logger.String("orderId", orderId.String()), logger.String("price", input.Price.String())) return models.Order{}, models.ErrInvalidInput } - if input.Size.IsZero() { - logctx.Warn(ctx, "size zero is now allowed", logger.String("orderId", orderId.String()), logger.String("size", input.Size.String())) + if input.Size.IsZero() || input.Size.IsNegative() { + logctx.Warn(ctx, "size has to be positive", logger.String("orderId", orderId.String()), logger.String("size", input.Size.String())) return models.Order{}, models.ErrInvalidInput }