in router/core/request_context_fields.go [192:251]
func getCustomDynamicAttributeValue(
attribute *config.CustomDynamicAttribute,
reqContext *requestContext,
err any,
) interface{} {
if attribute == nil || attribute.ContextField == "" {
return ""
}
if reqContext == nil {
// If the request context is nil, we can only return the error state.
if attribute.ContextField == ContextFieldRequestError {
return err != nil
} else if attribute.ContextField == ContextFieldResponseErrorMessage && err != nil {
return fmt.Sprintf("%v", err)
}
return ""
}
switch attribute.ContextField {
case ContextFieldRequestError:
return err != nil || reqContext.error != nil
case ContextFieldOperationName:
return reqContext.operation.Name()
case ContextFieldOperationType:
return reqContext.operation.Type()
case ContextFieldOperationPlanningTime:
return reqContext.operation.planningTime
case ContextFieldOperationNormalizationTime:
return reqContext.operation.normalizationTime
case ContextFieldOperationParsingTime:
return reqContext.operation.parsingTime
case ContextFieldOperationValidationTime:
return reqContext.operation.validationTime
case ContextFieldOperationSha256:
return reqContext.operation.sha256Hash
case ContextFieldOperationHash:
if reqContext.operation.hash != 0 {
return strconv.FormatUint(reqContext.operation.hash, 10)
}
return reqContext.operation.Hash()
case ContextFieldPersistedOperationSha256:
return reqContext.operation.persistedID
case ContextFieldResponseErrorMessage:
if err != nil {
return fmt.Sprintf("%v", err)
}
if reqContext.error != nil {
return reqContext.error.Error()
}
case ContextFieldOperationServices:
return reqContext.dataSourceNames
case ContextFieldGraphQLErrorServices:
return reqContext.graphQLErrorServices
case ContextFieldGraphQLErrorCodes:
return reqContext.graphQLErrorCodes
}
return ""
}