(req *Request, rec recorder, log *zap.Logger, kc *key.ResponseKey)
| 244 | } |
| 245 | |
| 246 | func (r *Route) RunStepsV2(req *Request, rec recorder, log *zap.Logger, kc *key.ResponseKey) (*Response, error) { |
| 247 | if len(r.Steps) == 0 { |
| 248 | return nil, errors.New("steps are empty") |
| 249 | } |
| 250 | |
| 251 | body, err := io.ReadAll(req.Forwarded.Body) |
| 252 | if err != nil { |
| 253 | return nil, err |
| 254 | } |
| 255 | |
| 256 | events := []*event.Event{} |
| 257 | response := &Response{} |
| 258 | |
| 259 | for _, step := range r.Steps { |
| 260 | dur := time.Second |
| 261 | if len(step.RetryInterval) != 0 { |
| 262 | parsed, err := time.ParseDuration(step.RetryInterval) |
| 263 | if err != nil { |
| 264 | return nil, err |
| 265 | } |
| 266 | |
| 267 | dur = parsed |
| 268 | } |
| 269 | |
| 270 | b := InitializeBackoff(r.RetryStrategy, dur) |
| 271 | withRetries := backoff.WithMaxRetries(b, uint64(step.Retries)) |
| 272 | |
| 273 | do := func() error { |
| 274 | start := time.Now() |
| 275 | |
| 276 | evt := &event.Event{ |
| 277 | Id: util.NewUuid(), |
| 278 | CreatedAt: time.Now().Unix(), |
| 279 | Tags: kc.Tags, |
| 280 | KeyId: kc.KeyId, |
| 281 | Provider: step.Provider, |
| 282 | Method: req.Forwarded.Method, |
| 283 | Path: req.Forwarded.URL.Path, |
| 284 | Model: step.Model, |
| 285 | Action: req.Action, |
| 286 | Request: []byte(`{}`), |
| 287 | Response: []byte(`{}`), |
| 288 | CustomId: req.Forwarded.Header.Get("X-CUSTOM-EVENT-ID"), |
| 289 | UserId: req.UserId, |
| 290 | PolicyId: req.PolicyId, |
| 291 | RouteId: r.Id, |
| 292 | CorrelationId: req.CorrelationId, |
| 293 | } |
| 294 | |
| 295 | defer func() { |
| 296 | evt.LatencyInMs = int(time.Since(start).Milliseconds()) |
| 297 | }() |
| 298 | |
| 299 | events = append(events, evt) |
| 300 | |
| 301 | if kc.ShouldLogRequest { |
| 302 | evt.Request = body |
| 303 | } |
no test coverage detected