feature/backoffice #6
@@ -43,12 +43,13 @@ func listCartFiles(dir string) ([]CartFileInfo, error) {
|
||||
name := e.Name()
|
||||
var id uint64
|
||||
var parseErr error
|
||||
if strings.HasPrefix(name, "{") && strings.HasSuffix(name, "}.events.log") {
|
||||
idStr := strings.TrimSuffix(strings.TrimPrefix(name, "{"), "}.events.log")
|
||||
parts := strings.Split(name, ".")
|
||||
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)
|
||||
} else if strings.HasSuffix(name, ".events.log") {
|
||||
base := strings.TrimSuffix(name, ".events.log")
|
||||
id, parseErr = strconv.ParseUint(base, 10, 64)
|
||||
} else {
|
||||
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"})
|
||||
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)
|
||||
if err != nil {
|
||||
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"})
|
||||
return
|
||||
if cartId, ok := cart.ParseCartId(idStr); !ok {
|
||||
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"})
|
||||
return
|
||||
} else {
|
||||
id = uint64(cartId)
|
||||
}
|
||||
}
|
||||
// reconstruct state from event log if present
|
||||
grain := cart.NewCartGrain(id, time.Now())
|
||||
|
||||
Reference in New Issue
Block a user