diff --git a/api-tests/cart.http b/api-tests/cart.http new file mode 100644 index 0000000..0ce09c9 --- /dev/null +++ b/api-tests/cart.http @@ -0,0 +1,38 @@ + +### Add item to cart +POST https://cart.tornberg.me/api/12345 +Content-Type: application/json + +{ + "sku": "763281", + "quantity": 1 +} + +### Update quanity of item in cart +PUT https://cart.tornberg.me/api/12345/1 +Content-Type: application/json + +{ + "quantity": 1 +} + +### Add item to cart +POST http://localhost:8080/cart/12345/item +Content-Type: application/json + +{ + "itemId": "67890", + "quantity": 2 +} + +### Remove item from cart +DELETE http://localhost:8080/cart/12345/item/67890 + +### Checkout cart +POST http://localhost:8080/cart/12345/checkout +Content-Type: application/json + +{ + "paymentMethod": "credit_card", + "shippingAddress": "123 Main St, Anytown, USA" +} \ No newline at end of file diff --git a/pool-server.go b/pool-server.go index 3928c68..1cf4345 100644 --- a/pool-server.go +++ b/pool-server.go @@ -164,14 +164,15 @@ func (s *PoolServer) HandleRemoveDelivery(w http.ResponseWriter, r *http.Request func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request) error { id := r.PathValue("id") - itemIdString := r.PathValue("itemId") - itemId, err := strconv.Atoi(itemIdString) + + changeQuantity := messages.ChangeQuantity{} + err := json.NewDecoder(r.Body).Decode(&changeQuantity) if err != nil { return err } reply, err := s.pool.Process(ToCartId(id), Message{ Type: ChangeQuantityType, - Content: &messages.ChangeQuantity{Id: int64(itemId)}, + Content: changeQuantity, }) if err != nil { return err @@ -182,14 +183,14 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request) error { id := r.PathValue("id") - pickupPoint := messages.AddRequest{} - err := json.NewDecoder(r.Body).Decode(&pickupPoint) + addRequest := messages.AddRequest{} + err := json.NewDecoder(r.Body).Decode(&addRequest) if err != nil { return err } reply, err := s.pool.Process(ToCartId(id), Message{ Type: AddRequestType, - Content: &pickupPoint, + Content: &addRequest, }) if err != nil { return err @@ -203,7 +204,7 @@ func (s *PoolServer) Serve() *http.ServeMux { mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku)) mux.HandleFunc("POST /{id}", ErrorHandler(s.HandleAddRequest)) mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem)) - mux.HandleFunc("PUT /{id}/{itemId}", ErrorHandler(s.HandleQuantityChange)) + mux.HandleFunc("PUT /{id}", ErrorHandler(s.HandleQuantityChange)) mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery)) mux.HandleFunc("DELETE /{id}/delivery/{deliveryId}", ErrorHandler(s.HandleRemoveDelivery)) mux.HandleFunc("PUT /{id}/delivery/{deliveryId}/pickupPoint", ErrorHandler(s.HandleSetPickupPoint)) diff --git a/synced-pool_test.go b/synced-pool_test.go index 46ca9f7..8845055 100644 --- a/synced-pool_test.go +++ b/synced-pool_test.go @@ -16,7 +16,7 @@ func TestConnection(t *testing.T) { Id: id, storageMessages: []Message{}, Items: []*CartItem{}, - Deliveries: make([]CartDelivery, 0), + Deliveries: make([]*CartDelivery, 0), TotalPrice: 0, }, nil })