Files
trufflehog/pkg/tui/sources/postman/postman.go
2024-05-29 16:07:23 -07:00

84 lines
2.0 KiB
Go

package postman
import (
"strings"
"github.com/trufflesecurity/trufflehog/v3/pkg/tui/common"
"github.com/trufflesecurity/trufflehog/v3/pkg/tui/components/textinputs"
)
type postmanCmdModel struct {
textinputs.Model
}
func GetNote() string {
return "Please enter an ID for a workspace, collection, or environment."
}
func GetFields() postmanCmdModel {
token := textinputs.InputConfig{
Label: "Postman token",
Key: "token",
Required: true,
Help: "Postman API key",
Placeholder: "PMAK-",
}
workspace := textinputs.InputConfig{
Label: "Workspace ID",
Key: "workspace",
Required: false,
Help: "ID for workspace",
}
collection := textinputs.InputConfig{
Label: "Collection ID",
Key: "collection",
Required: false,
Help: "ID for an API collection",
}
environment := textinputs.InputConfig{
Label: "Environment ID",
Key: "environment",
Required: false,
Help: "ID for an environment",
}
return postmanCmdModel{textinputs.New([]textinputs.InputConfig{token, workspace, collection, environment})}
}
func findFirstNonEmptyKey(inputs map[string]textinputs.Input, keys []string) string {
for _, key := range keys {
if val, ok := inputs[key]; ok && val.Value != "" {
return key
}
}
return ""
}
func (m postmanCmdModel) Cmd() string {
var command []string
command = append(command, "trufflehog", "postman")
inputs := m.GetInputs()
keys := []string{"workspace", "collection", "environment"}
command = append(command, "--token="+inputs["token"].Value)
key := findFirstNonEmptyKey(inputs, keys)
if key != "" {
command = append(command, "--"+key+"="+inputs[key].Value)
}
return strings.Join(command, " ")
}
func (m postmanCmdModel) Summary() string {
inputs := m.GetInputs()
labels := m.GetLabels()
keys := []string{"token", "workspace", "collection", "environment"}
summaryKeys := []string{"token"}
key := findFirstNonEmptyKey(inputs, keys[1:])
if key != "" {
summaryKeys = append(summaryKeys, key)
}
return common.SummarizeSource(summaryKeys, inputs, labels)
}