| 191 | } |
| 192 | |
| 193 | func (h *Handler) handleValidationResult(kc *key.ResponseKey, cost float64) error { |
| 194 | err := h.v.Validate(kc, cost) |
| 195 | |
| 196 | if err != nil { |
| 197 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.handle_validation_result", nil, 1) |
| 198 | |
| 199 | if _, ok := err.(expirationError); ok { |
| 200 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.expiraton_error", nil, 1) |
| 201 | |
| 202 | tks, err := h.km.GetKeys(nil, []string{kc.KeyId}, "") |
| 203 | if err != nil { |
| 204 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.get_keys_error", nil, 1) |
| 205 | } |
| 206 | |
| 207 | if len(tks) == 1 { |
| 208 | err := h.v.Validate(tks[0], cost) |
| 209 | if err != nil { |
| 210 | if xe, ok := err.(expirationError); ok { |
| 211 | h.log.Debug("expiration error", |
| 212 | zap.String("expired_reason", xe.Reason()), |
| 213 | zap.String("key_id", kc.KeyId), |
| 214 | ) |
| 215 | |
| 216 | truePtr := true |
| 217 | _, err = h.km.UpdateKey(kc.KeyId, &key.UpdateKey{ |
| 218 | Revoked: &truePtr, |
| 219 | RevokedReason: key.RevokedReasonExpired, |
| 220 | }) |
| 221 | |
| 222 | if err != nil { |
| 223 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.update_key_error", nil, 1) |
| 224 | return err |
| 225 | } |
| 226 | |
| 227 | return nil |
| 228 | } |
| 229 | } |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | if _, ok := err.(rateLimitError); ok { |
| 234 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.rate_limit_error", nil, 1) |
| 235 | |
| 236 | err = h.ac.Set(kc.KeyId, kc.RateLimitUnit) |
| 237 | if err != nil { |
| 238 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.set_rate_limit_error", nil, 1) |
| 239 | return err |
| 240 | } |
| 241 | |
| 242 | return nil |
| 243 | } |
| 244 | |
| 245 | if _, ok := err.(costLimitError); ok { |
| 246 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.cost_limit_error", nil, 1) |
| 247 | |
| 248 | err = h.ac.Set(kc.KeyId, kc.CostLimitInUsdUnit) |
| 249 | if err != nil { |
| 250 | telemetry.Incr("bricksllm.message.handler.handle_validation_result.set_cost_limit_error", nil, 1) |