feature/backoffice #6
@@ -43,12 +43,13 @@ func listCartFiles(dir string) ([]CartFileInfo, error) {
|
|||||||
name := e.Name()
|
name := e.Name()
|
||||||
var id uint64
|
var id uint64
|
||||||
var parseErr error
|
var parseErr error
|
||||||
if strings.HasPrefix(name, "{") && strings.HasSuffix(name, "}.events.log") {
|
parts := strings.Split(name, ".")
|
||||||
idStr := strings.TrimSuffix(strings.TrimPrefix(name, "{"), "}.events.log")
|
if len(parts) == 2 && parts[1] == "events.log" {
|
||||||
|
idStr := parts[0]
|
||||||
|
id, parseErr = strconv.ParseUint(idStr, 10, 64)
|
||||||
|
} else if len(parts) == 3 && parts[1] == "events" && parts[2] == "log" {
|
||||||
|
idStr := parts[0]
|
||||||
id, parseErr = strconv.ParseUint(idStr, 10, 64)
|
id, parseErr = strconv.ParseUint(idStr, 10, 64)
|
||||||
} else if strings.HasSuffix(name, ".events.log") {
|
|
||||||
base := strings.TrimSuffix(name, ".events.log")
|
|
||||||
id, parseErr = strconv.ParseUint(base, 10, 64)
|
|
||||||
} else {
|
} else {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -133,18 +134,15 @@ func (fs *FileServer) CartHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "missing id"})
|
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "missing id"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// normalize idStr: support "{123}.events.log", "{123}", "123.events.log", "123"
|
|
||||||
if strings.HasPrefix(idStr, "{") && strings.HasSuffix(idStr, "}.events.log") {
|
|
||||||
idStr = strings.TrimSuffix(strings.TrimPrefix(idStr, "{"), "}.events.log")
|
|
||||||
} else if strings.HasPrefix(idStr, "{") && strings.HasSuffix(idStr, "}") {
|
|
||||||
idStr = strings.TrimSuffix(strings.TrimPrefix(idStr, "{"), "}")
|
|
||||||
} else if strings.HasSuffix(idStr, ".events.log") {
|
|
||||||
idStr = strings.TrimSuffix(idStr, ".events.log")
|
|
||||||
}
|
|
||||||
id, err := strconv.ParseUint(idStr, 10, 64)
|
id, err := strconv.ParseUint(idStr, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if cartId, ok := cart.ParseCartId(idStr); !ok {
|
||||||
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"})
|
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"})
|
||||||
return
|
return
|
||||||
|
} else {
|
||||||
|
id = uint64(cartId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// reconstruct state from event log if present
|
// reconstruct state from event log if present
|
||||||
grain := cart.NewCartGrain(id, time.Now())
|
grain := cart.NewCartGrain(id, time.Now())
|
||||||
|
|||||||
Reference in New Issue
Block a user