mirror of
https://github.com/trufflesecurity/trufflehog.git
synced 2024-11-10 07:04:24 +00:00
b1675194ca
* Implement EndpointCustomizer Add the EndpointCustomizer interface and EndpointSetter convenience struct, implement EndpointCustomizer for github and gitlab detectors, and add parsing, verification, and applying user-supplied configuration. * Check error from SetEndpoints * Rename variable for clarity
36 lines
995 B
Go
36 lines
995 B
Go
package detectors
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/trufflesecurity/trufflehog/v3/pkg/common"
|
|
)
|
|
|
|
// EndpointSetter implements a sensible default for the SetEndpoints function
|
|
// of the EndpointCustomizer interface. A detector can embed this struct to
|
|
// gain the functionality.
|
|
type EndpointSetter struct {
|
|
endpoints []string
|
|
}
|
|
|
|
func (e *EndpointSetter) SetEndpoints(endpoints ...string) error {
|
|
if len(endpoints) == 0 {
|
|
return fmt.Errorf("at least one endpoint required")
|
|
}
|
|
deduped := make([]string, 0, len(endpoints))
|
|
for _, endpoint := range endpoints {
|
|
common.AddStringSliceItem(endpoint, &deduped)
|
|
}
|
|
e.endpoints = deduped
|
|
return nil
|
|
}
|
|
|
|
func (e *EndpointSetter) Endpoints(defaultEndpoint string) []string {
|
|
// The only valid time len(e.endpoints) == 0 is when EndpointSetter is
|
|
// initializetd to its default state. That means SetEndpoints was never
|
|
// called and we should use the default.
|
|
if len(e.endpoints) == 0 {
|
|
return []string{defaultEndpoint}
|
|
}
|
|
return e.endpoints
|
|
}
|