(raw string)
| 244 | } |
| 245 | |
| 246 | func readFunctionPayload(raw string) ([]byte, time.Duration, error) { |
| 247 | if raw == "" { |
| 248 | return nil, 0, nil |
| 249 | } |
| 250 | |
| 251 | var data []byte |
| 252 | var err error |
| 253 | if after, ok := strings.CutPrefix(raw, "@"); ok { |
| 254 | data, err = os.ReadFile(after) |
| 255 | } else { |
| 256 | data = []byte(raw) |
| 257 | } |
| 258 | if err != nil { |
| 259 | return nil, 0, fmt.Errorf("read payload: %w", err) |
| 260 | } |
| 261 | |
| 262 | var payload map[string]any |
| 263 | if err := json.Unmarshal(data, &payload); err != nil { |
| 264 | return nil, 0, fmt.Errorf("parse payload JSON: %w", err) |
| 265 | } |
| 266 | |
| 267 | timeoutMs, ok, err := parsePayloadTimeout(payload) |
| 268 | if err != nil { |
| 269 | return nil, 0, err |
| 270 | } |
| 271 | if ok { |
| 272 | return data, time.Duration(timeoutMs) * time.Millisecond, nil |
| 273 | } |
| 274 | return data, 0, nil |
| 275 | } |
| 276 | |
| 277 | func parsePayloadTimeout(payload map[string]any) (int64, bool, error) { |
| 278 | if payload == nil { |
no test coverage detected
searching dependent graphs…