in server/resource/v1/kv_resource.go [204:256]
func returnData(rctx *restful.Context, request *model.ListKVRequest) {
revStr := rctx.ReadQueryParameter(common.QueryParamRev)
wait := rctx.ReadQueryParameter(common.QueryParamWait)
if wait != "" {
duration, err := time.ParseDuration(wait)
if err != nil {
WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
var cancel context.CancelFunc
rctx.Ctx, cancel = context.WithTimeout(rctx.Ctx, duration)
defer cancel()
}
if revStr == "" {
if wait == "" {
queryAndResponse(rctx, request)
return
}
if !isLegalWaitRequest(rctx, request) {
return
}
if watch(rctx, request, wait) {
return
}
rctx.WriteHeader(http.StatusNotModified)
return
}
revised, err := revNotMatch(rctx.Ctx, revStr, request.Domain)
if err != nil {
if err == ErrInvalidRev {
WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
WriteErrResponse(rctx, config.ErrInternal, err.Error())
return
}
if revised {
queryAndResponse(rctx, request)
return
} else if wait != "" {
if !isLegalWaitRequest(rctx, request) {
return
}
if watch(rctx, request, wait) {
return
}
rctx.WriteHeader(http.StatusNotModified)
return
} else {
rctx.WriteHeader(http.StatusNotModified)
}
}