Documentation ¶
Overview ¶
Package util provides helper functions for the minder CLI.
Package util provides helper functions for the minder CLI.
Package util provides helper functions for minder ¶
Package util provides helper functions for the minder CLI.
Index ¶
- Constants
- Variables
- func GenerateCurlCommand(ctx context.Context, method, apiBaseURL, endpoint, body string) (string, error)
- func GetBytesFromProto(message protoreflect.ProtoMessage) ([]byte, error)
- func GetConfigDirPath() (string, error)
- func GetGrpcConnection(grpc_host string, grpc_port int, allowInsecure bool, issuerUrl string, ...) (*grpc.ClientConn, error)
- func GetJsonFromProto(msg protoreflect.ProtoMessage) (string, error)
- func GetToken(issuerUrl string, clientId string) (string, error)
- func GetYamlFromProto(msg protoreflect.ProtoMessage) (string, error)
- func HttpMethodFromString(inMeth, dfl string) string
- func Int32FromString(v string) (int32, error)
- func JQEvalBoolExpression(ctx context.Context, path string, obj any) (bool, error)
- func JQReadConstant[T any](constant any) (T, error)
- func JQReadFrom[T any](ctx context.Context, path string, obj any) (T, error)
- func OpenFileArg(f string, dashOpen io.Reader) (desc io.Reader, closer func(), err error)
- func RemoveCredentials() error
- func RevokeOfflineToken(token string, issuerUrl string, clientId string) error
- func RevokeToken(token string, issuerUrl string, clientId string, tokenHint string) error
- func SanitizingInterceptor() grpc.UnaryServerInterceptor
- func SaveCredentials(tokens OpenIdCredentials) (string, error)
- func ViperLogLevelToZerologLevel(viperLogLevel string) zerolog.Level
- type ExpandedFile
- type JWTTokenCredentials
- type LimitedWriter
- type NiceStatus
- type OpenIdCredentials
- type SafeTemplate
- type TestWriter
Constants ¶
const (
// CurlCmdMaxSize is the maximum size of the rendered curl command
CurlCmdMaxSize = 2048
)
Variables ¶
var ( // PyRequestsVersionRegexp is a regexp to match a line in a requirements.txt file, including the package version // and the comparison operators PyRequestsVersionRegexp = regexp.MustCompile(`\s*(>=|<=|==|>|<|!=)\s*(\d+(\.\d+)*(\*)?)`) // PyRequestsNameRegexp is a regexp to match a line in a requirements.txt file, parsing out the package name PyRequestsNameRegexp = regexp.MustCompile(`\s*(>=|<=|==|>|<|!=)`) // MinderAuthTokenEnvVar is the environment variable for the minder auth token //nolint:gosec // This is not a hardcoded credential MinderAuthTokenEnvVar = "MINDER_AUTH_TOKEN" // ErrGettingRefreshToken is an error for when we can't get a refresh token ErrGettingRefreshToken = errors.New("error refreshing credentials") )
var ( // ErrExceededSizeLimit is returned when the size limit is exceeded ErrExceededSizeLimit = errors.New("exceeded size limit") )
var ErrNoValueFound = errors.New("evaluation error")
ErrNoValueFound is an error that is returned when the accessor doesn't find anything
var ( // TemplateFuncs is a map of functions that can be used in templates // It introduces two custom functions: // - asMap: converts a structpb (or anything that implements the AsMap function call) to a map // - mapGet: returns the value of a key in a map TemplateFuncs = template.FuncMap{ "asMap": asMap, "mapGet": mapGet, } )
Functions ¶
func GenerateCurlCommand ¶
func GenerateCurlCommand(ctx context.Context, method, apiBaseURL, endpoint, body string) (string, error)
GenerateCurlCommand generates a curl command from a method, apiBaseURL, endpoint, and body this is useful to provide a dry-run for remediations
func GetBytesFromProto ¶
func GetBytesFromProto(message protoreflect.ProtoMessage) ([]byte, error)
GetBytesFromProto given a proto message, formats into bytes
func GetConfigDirPath ¶
GetConfigDirPath returns the path to the config directory
func GetGrpcConnection ¶
func GetGrpcConnection( grpc_host string, grpc_port int, allowInsecure bool, issuerUrl string, clientId string, opts ...grpc.DialOption) ( *grpc.ClientConn, error)
GetGrpcConnection is a helper for getting a testing connection for grpc
func GetJsonFromProto ¶
func GetJsonFromProto(msg protoreflect.ProtoMessage) (string, error)
GetJsonFromProto given a proto message, formats into json
func GetToken ¶
GetToken retrieves the access token from the credentials file and refreshes it if necessary
func GetYamlFromProto ¶
func GetYamlFromProto(msg protoreflect.ProtoMessage) (string, error)
GetYamlFromProto given a proto message, formats into yaml
func HttpMethodFromString ¶
HttpMethodFromString returns the HTTP method from a string based on upprecase inMeth, defaulting to dfl
func Int32FromString ¶
Int32FromString converts a string to an int32
func JQEvalBoolExpression ¶ added in v0.0.70
JQEvalBoolExpression evaluates the given path on the object and returns the string value the path is the accessor path in jq format which must return a boolean value.
func JQReadConstant ¶
JQReadConstant gets the typed value from the given constant. Returns an error when the type assertion fails.
func JQReadFrom ¶
JQReadFrom gets the typed value from the given accessor. Returns an error when the accessor doesn't find anything or when the type assertion fails. Useful for when you know the type you're expecting AND the accessor must return a value (IOW, the value is required by the caller)
func OpenFileArg ¶
OpenFileArg opens a file argument and returns a descriptor, closer, and error If the file is "-", it will return whatever is passed in as dashOpen and a no-op closer
func RemoveCredentials ¶
func RemoveCredentials() error
RemoveCredentials removes the local credentials file
func RevokeOfflineToken ¶
RevokeOfflineToken revokes the given offline token using OAuth2.0's Token Revocation endpoint from RFC 7009.
func RevokeToken ¶
RevokeToken revokes the given token using OAuth2.0's Token Revocation endpoint from RFC 7009. The tokenHint is the type of token being revoked, such as "access_token" or "refresh_token". In the case of an offline token, the tokenHint should be "refresh_token".
func SanitizingInterceptor ¶
func SanitizingInterceptor() grpc.UnaryServerInterceptor
SanitizingInterceptor sanitized error statuses which do not conform to NiceStatus, ensuring that we don't accidentally leak implementation details over gRPC.
func SaveCredentials ¶
func SaveCredentials(tokens OpenIdCredentials) (string, error)
SaveCredentials saves the credentials to a file
func ViperLogLevelToZerologLevel ¶
ViperLogLevelToZerologLevel converts a viper log level to a zerolog log level
Types ¶
type ExpandedFile ¶ added in v0.0.70
ExpandedFile is a struct to hold a file path and whether it was expanded
func ExpandFileArgs ¶
func ExpandFileArgs(files ...string) ([]ExpandedFile, error)
ExpandFileArgs expands a list of file arguments into a list of files. If the file list contains "-" or regular files, it will leave them as-is. If the file list contains directories, it will expand them into a list of files.
type JWTTokenCredentials ¶
type JWTTokenCredentials struct {
// contains filtered or unexported fields
}
JWTTokenCredentials is a helper struct for grpc
func (JWTTokenCredentials) GetRequestMetadata ¶
func (jwt JWTTokenCredentials) GetRequestMetadata(_ context.Context, _ ...string) (map[string]string, error)
GetRequestMetadata implements the PerRPCCredentials interface.
func (JWTTokenCredentials) RequireTransportSecurity ¶
func (JWTTokenCredentials) RequireTransportSecurity() bool
RequireTransportSecurity implements the PerRPCCredentials interface.
type LimitedWriter ¶
type LimitedWriter struct {
// contains filtered or unexported fields
}
LimitedWriter is an io.Writer that limits the number of bytes written
func NewLimitedWriter ¶
func NewLimitedWriter(w io.Writer, limit int) *LimitedWriter
NewLimitedWriter creates a new LimitedWriter
type NiceStatus ¶
type NiceStatus struct { // Description status code Code codes.Code // Name Name string // Description Description string // Actions, reasons and links Details string }
NiceStatus A wrapper around a status to give a better description.
func FromRpcError ¶
func FromRpcError(s *status.Status) *NiceStatus
FromRpcError convert a grpc status.Status to a nice status for formatting
func GetNiceStatus ¶
func GetNiceStatus(code codes.Code) *NiceStatus
GetNiceStatus get a nice status from the code.
func UserVisibleError ¶
func UserVisibleError(code codes.Code, message string, args ...any) *NiceStatus
UserVisibleError returns a status error where message is visible to the user, rather than being filtered to generic advice. You need to use this explicitly, so that it's easy to track where we are providing (leaking) user-visible information from minder.
func (*NiceStatus) GRPCStatus ¶
func (s *NiceStatus) GRPCStatus() *status.Status
GRPCStatus makes NiceStatus a valid GRPC status response (see https://godoc.org/google.golang.org/grpc/status#FromError for details)
func (*NiceStatus) SetCode ¶
func (s *NiceStatus) SetCode(code codes.Code) *NiceStatus
SetCode generates the nice status from the code.
func (*NiceStatus) String ¶
func (s *NiceStatus) String() string
String convert the status to a string
type OpenIdCredentials ¶
type OpenIdCredentials struct { AccessToken string `json:"access_token"` RefreshToken string `json:"refresh_token"` AccessTokenExpiresAt time.Time `json:"expiry"` }
OpenIdCredentials is a struct to hold the access and refresh tokens
func LoadCredentials ¶
func LoadCredentials() (OpenIdCredentials, error)
LoadCredentials loads the credentials from a file
func RefreshCredentials ¶
func RefreshCredentials(refreshToken string, issuerUrl string, clientId string) (OpenIdCredentials, error)
RefreshCredentials uses a refresh token to get and save a new set of credentials
type SafeTemplate ¶
type SafeTemplate struct {
// contains filtered or unexported fields
}
SafeTemplate is a `template` wrapper that ensures that the template is rendered in a safe and secure manner. That is, with memory limits and timeouts.
func NewSafeHTMLTemplate ¶
func NewSafeHTMLTemplate(tmpl *string, name string) (*SafeTemplate, error)
NewSafeHTMLTemplate creates a new SafeTemplate for HTML templates
func NewSafeTextTemplate ¶
func NewSafeTextTemplate(tmpl *string, name string) (*SafeTemplate, error)
NewSafeTextTemplate creates a new SafeTemplate for text templates
type TestWriter ¶
type TestWriter struct {
Output string
}
TestWriter is a helper struct for testing
Directories ¶
Path | Synopsis |
---|---|
Package cache contains cache utilities and implementations
|
Package cache contains cache utilities and implementations |
Package cli contains utility for the cli
|
Package cli contains utility for the cli |
table
Package table contains utilities for rendering tables
|
Package table contains utilities for rendering tables |
table/layouts
Package layouts defines the available table layouts
|
Package layouts defines the available table layouts |
table/simple
Package simple contains a simple table
|
Package simple contains a simple table |
useragent
Package useragent contains utilities for setting up the CLI's user agent
|
Package useragent contains utilities for setting up the CLI's user agent |
Package cursor provides a way to encode and decode cursors for paginated queries
|
Package cursor provides a way to encode and decode cursors for paginated queries |
Package jsonyaml contains utility functions for converting to/from json and yaml
|
Package jsonyaml contains utility functions for converting to/from json and yaml |
Package ptr contains the Ptr function
|
Package ptr contains the Ptr function |
Package rand contains utility functions largely for unit testing.
|
Package rand contains utility functions largely for unit testing. |
Package schemaupdate contains utility functions to compare two schemas for updates
|
Package schemaupdate contains utility functions to compare two schemas for updates |
Package testqueue contains queue utilities for testing
|
Package testqueue contains queue utilities for testing |