Add AnalysisError type and wrap all analyzer error paths (#4779)
* Add AnalysisError type and AnalysisErrorInfo interface Introduce a shared error type that provides structured metadata (analyzer type, operation, service, resource) for analysis failures. This allows the scanner to extract context from errors without depending on concrete types. * Wrap errors in simple API analyzers with AnalysisError Batch A: Airbrake, Anthropic, Asana, DigitalOcean, DockerHub, ElevenLabs, Fastly, Groq, HuggingFace, Mailchimp, Mailgun, Mux, Netlify, Ngrok, Notion, OpenAI, Opsgenie, Posthog, Postman, Sendgrid, Sourcegraph. Wraps credential validation errors with operation "validate_credentials" and AnalyzePermissions errors with operation "analyze_permissions". * Wrap errors in remaining analyzers with AnalysisError (Batches B-E) Batch B (OAuth/multi-credential): airtableoauth, airtablepat, datadog, dropbox, figma, launchdarkly, plaid Batch C (Complex): bitbucket, databricks, github, gitlab, jira, monday, planetscale, shopify, slack, square, stripe, twilio Batch D (Database): mysql, postgres (service: Database) Batch E (PrivateKey): privatekey (service: crypto) * Use Type().String() and constants for NewAnalysisError calls Address PR feedback: replace hardcoded analyzer type strings with a.Type().String() and replace raw operation/service strings with package-level constants (OperationValidateCredentials, OperationAnalyzePermissions, ServiceAPI, ServiceConfig, etc.). * Omit empty resource parenthetical from AnalysisError messages Conditionally include "(resource: ...)" only when non-empty, avoiding cluttered messages like "... (resource: ): ..." that appear for the majority of analyzers that don't set a resource. * Wrap no-data error path in GitHub analyzer with AnalysisError
This commit is contained in:
@@ -25,7 +25,8 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeAir
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
info, err := AnalyzePermissions(a.Cfg, credInfo["key"])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -22,12 +22,12 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeAir
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, ok := credInfo["token"]
|
||||
if !ok {
|
||||
return nil, errors.New("token not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credInfo"))
|
||||
}
|
||||
|
||||
userInfo, err := common.FetchAirtableUserInfo(token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
var basesInfo *common.AirtableBases
|
||||
|
||||
@@ -36,12 +36,12 @@ func getScopeEndpoint(scope string) (common.Endpoint, bool) {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, ok := credInfo["token"]
|
||||
if !ok {
|
||||
return nil, errors.New("token not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credInfo"))
|
||||
}
|
||||
|
||||
userInfo, err := common.FetchAirtableUserInfo(token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
scopeStatusMap[common.PermissionStrings[common.UserEmailRead]] = userInfo.Email != nil
|
||||
@@ -49,17 +49,17 @@ func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analy
|
||||
var basesInfo *common.AirtableBases
|
||||
granted, err := determineScope(token, common.SchemaBasesRead, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
if granted {
|
||||
basesInfo, err = common.FetchAirtableBases(token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
// If bases are fetched, determine the token scopes
|
||||
err := determineScopes(token, basesInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -51,12 +51,14 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
secretInfo, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(secretInfo), nil
|
||||
|
||||
@@ -28,12 +28,14 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeAsa
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credInfo"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -63,11 +63,11 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeBit
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -26,17 +26,17 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, exist := credInfo["token"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("key not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("key not found in credential info"))
|
||||
}
|
||||
|
||||
domain, exist := credInfo["domain"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("domain not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("domain not found in credential info"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(ctx, a.Cfg, domain, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -33,7 +33,7 @@ func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]string) (*ana
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, apiKey, appKey, endpoint)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -34,11 +34,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeDig
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -54,17 +54,20 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
username, exist := credInfo["username"]
|
||||
if !exist {
|
||||
return nil, errors.New("username not found in the credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("username not found in the credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
pat, exist := credInfo["pat"]
|
||||
if !exist {
|
||||
return nil, errors.New("personal access token(PAT) not found in the credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("personal access token(PAT) not found in the credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, username, pat)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -43,12 +43,12 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, exist := credInfo["token"]
|
||||
if !exist {
|
||||
return nil, errors.New("token not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credentials info"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -86,12 +86,14 @@ func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analy
|
||||
// check if the `key` exist in the credentials info
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package analyzers
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Operation constants for AnalysisError.
|
||||
const (
|
||||
OperationValidateCredentials = "validate_credentials"
|
||||
OperationAnalyzePermissions = "analyze_permissions"
|
||||
)
|
||||
|
||||
// Service constants for AnalysisError.
|
||||
const (
|
||||
ServiceAPI = "API"
|
||||
ServiceConfig = "config"
|
||||
ServiceDatabase = "Database"
|
||||
ServiceOAuth = "OAuth"
|
||||
ServiceCrypto = "crypto"
|
||||
)
|
||||
|
||||
// AnalysisErrorInfo is implemented by errors that provide structured context
|
||||
// about analysis failures. This allows downstream consumers (e.g., the scanner)
|
||||
// to extract metadata for structured error storage without depending on
|
||||
// concrete error types.
|
||||
type AnalysisErrorInfo interface {
|
||||
error
|
||||
AnalyzerType() string
|
||||
Operation() string // "validate_credentials", "authenticate", "analyze_permissions", "connect", "ping"
|
||||
Service() string // "config", "API", "OAuth", "Database"
|
||||
Resource() string // account ID, endpoint URL, or other identifier
|
||||
}
|
||||
|
||||
// AnalysisError represents a structured error from an analyzer.
|
||||
type AnalysisError struct {
|
||||
analyzerType string
|
||||
operation string
|
||||
service string
|
||||
resource string
|
||||
err error
|
||||
}
|
||||
|
||||
// NewAnalysisError creates a new AnalysisError.
|
||||
func NewAnalysisError(analyzerType, operation, service, resource string, err error) *AnalysisError {
|
||||
return &AnalysisError{
|
||||
analyzerType: analyzerType,
|
||||
operation: operation,
|
||||
service: service,
|
||||
resource: resource,
|
||||
err: err,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *AnalysisError) Error() string {
|
||||
var resource string
|
||||
if e.resource != "" {
|
||||
resource = fmt.Sprintf(" (resource: %s)", e.resource)
|
||||
}
|
||||
if e.err != nil {
|
||||
return fmt.Sprintf("%s analysis failed: %s on %s%s: %v",
|
||||
e.analyzerType, e.operation, e.service, resource, e.err)
|
||||
}
|
||||
return fmt.Sprintf("%s analysis failed: %s on %s%s",
|
||||
e.analyzerType, e.operation, e.service, resource)
|
||||
}
|
||||
|
||||
func (e *AnalysisError) Unwrap() error { return e.err }
|
||||
func (e *AnalysisError) AnalyzerType() string { return e.analyzerType }
|
||||
func (e *AnalysisError) Operation() string { return e.operation }
|
||||
func (e *AnalysisError) Service() string { return e.service }
|
||||
func (e *AnalysisError) Resource() string { return e.resource }
|
||||
@@ -0,0 +1,86 @@
|
||||
package analyzers
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAnalysisErrorImplementsInterface(t *testing.T) {
|
||||
var _ AnalysisErrorInfo = (*AnalysisError)(nil)
|
||||
}
|
||||
|
||||
func TestAnalysisErrorFields(t *testing.T) {
|
||||
orig := fmt.Errorf("connection refused")
|
||||
e := NewAnalysisError("Postgres", "connect", "Database", "localhost:5432", orig)
|
||||
|
||||
if e.AnalyzerType() != "Postgres" {
|
||||
t.Errorf("AnalyzerType() = %q, want %q", e.AnalyzerType(), "Postgres")
|
||||
}
|
||||
if e.Operation() != "connect" {
|
||||
t.Errorf("Operation() = %q, want %q", e.Operation(), "connect")
|
||||
}
|
||||
if e.Service() != "Database" {
|
||||
t.Errorf("Service() = %q, want %q", e.Service(), "Database")
|
||||
}
|
||||
if e.Resource() != "localhost:5432" {
|
||||
t.Errorf("Resource() = %q, want %q", e.Resource(), "localhost:5432")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalysisErrorUnwrap(t *testing.T) {
|
||||
orig := fmt.Errorf("timeout")
|
||||
e := NewAnalysisError("GitHub", "authenticate", "API", "", orig)
|
||||
|
||||
if !errors.Is(e, orig) {
|
||||
t.Error("errors.Is should find the original error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalysisErrorAs(t *testing.T) {
|
||||
orig := fmt.Errorf("bad key")
|
||||
e := NewAnalysisError("Airbrake", "validate_credentials", "config", "", orig)
|
||||
|
||||
// Wrap it further
|
||||
wrapped := fmt.Errorf("analyze failed: %w", e)
|
||||
|
||||
var ae AnalysisErrorInfo
|
||||
if !errors.As(wrapped, &ae) {
|
||||
t.Fatal("errors.As should find AnalysisErrorInfo in wrapped error")
|
||||
}
|
||||
if ae.AnalyzerType() != "Airbrake" {
|
||||
t.Errorf("AnalyzerType() = %q, want %q", ae.AnalyzerType(), "Airbrake")
|
||||
}
|
||||
if ae.Operation() != "validate_credentials" {
|
||||
t.Errorf("Operation() = %q, want %q", ae.Operation(), "validate_credentials")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalysisErrorMessage(t *testing.T) {
|
||||
orig := fmt.Errorf("401 unauthorized")
|
||||
e := NewAnalysisError("Slack", "authenticate", "API", "workspace-123", orig)
|
||||
|
||||
expected := "Slack analysis failed: authenticate on API (resource: workspace-123): 401 unauthorized"
|
||||
if e.Error() != expected {
|
||||
t.Errorf("Error() = %q, want %q", e.Error(), expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalysisErrorMessageNilError(t *testing.T) {
|
||||
e := NewAnalysisError("MySQL", "connect", "Database", "db.example.com", nil)
|
||||
|
||||
expected := "MySQL analysis failed: connect on Database (resource: db.example.com)"
|
||||
if e.Error() != expected {
|
||||
t.Errorf("Error() = %q, want %q", e.Error(), expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAnalysisErrorMessageEmptyResource(t *testing.T) {
|
||||
orig := fmt.Errorf("invalid token")
|
||||
e := NewAnalysisError("OpenAI", "analyze_permissions", "API", "", orig)
|
||||
|
||||
expected := "OpenAI analysis failed: analyze_permissions on API: invalid token"
|
||||
if e.Error() != expected {
|
||||
t.Errorf("Error() = %q, want %q", e.Error(), expected)
|
||||
}
|
||||
}
|
||||
@@ -25,16 +25,16 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("key not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("key not found in credential info"),
|
||||
)
|
||||
}
|
||||
|
||||
// analyze permissions
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
// secret info to analyzer
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
|
||||
@@ -41,11 +41,11 @@ const (
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, ok := credInfo["token"]
|
||||
if !ok {
|
||||
return nil, errors.New("token not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credInfo"))
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return MapToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -35,10 +35,10 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeGit
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
info, err := AnalyzePermissions(a.Cfg, credInfo["key"])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
if info == nil {
|
||||
return nil, fmt.Errorf("GitHub analyzer returned no data for token")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", fmt.Errorf("GitHub analyzer returned no data for token"))
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeGit
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
host, ok := credInfo["host"]
|
||||
if !ok {
|
||||
@@ -43,7 +43,7 @@ func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analy
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key, host)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -58,12 +58,14 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
secretInfo, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(secretInfo), nil
|
||||
|
||||
@@ -33,12 +33,14 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeHug
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok || key == "" {
|
||||
return nil, fmt.Errorf("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("key not found in credentialInfo"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -28,20 +28,20 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
token, exist := credInfo["token"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("token not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("token not found in credential info"))
|
||||
}
|
||||
domain, exist := credInfo["domain"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("domain not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("domain not found in credential info"))
|
||||
}
|
||||
email, exist := credInfo["email"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("email not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("email not found in credential info"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, token, domain, email)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -29,16 +29,16 @@ func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analy
|
||||
// check if the `key` exist in the credentials info
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"))
|
||||
}
|
||||
|
||||
if isSDKKey(key) {
|
||||
return nil, errors.New("sdk keys cannot be analyzed")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("sdk keys cannot be analyzed"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -29,12 +29,14 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeMai
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -33,12 +33,14 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeMai
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -44,12 +44,12 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -41,16 +41,19 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"),
|
||||
)
|
||||
}
|
||||
secret, exist := credInfo["secret"]
|
||||
if !exist {
|
||||
return nil, errors.New("secret not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("secret not found in credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key, secret)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -33,11 +33,11 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeMyS
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
uri, ok := credInfo["connection_string"]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("missing connection string")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("missing connection string"))
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceDatabase, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -25,12 +25,14 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, fmt.Errorf("key not found in credential info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("key not found in credential info"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -36,12 +36,14 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, exist := credInfo["key"]
|
||||
if !exist {
|
||||
return nil, errors.New("key not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentials info"),
|
||||
)
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -30,11 +30,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeNot
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -31,7 +31,8 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeOpe
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
info, err := AnalyzePermissions(a.Cfg, credInfo["key"])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -30,11 +30,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeOps
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -31,20 +31,20 @@ func (a Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
secret, exist := credInfo["secret"]
|
||||
if !exist {
|
||||
return nil, errors.New("secret not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("secret not found in credentials info"))
|
||||
}
|
||||
clientID, exist := credInfo["id"]
|
||||
if !exist {
|
||||
return nil, errors.New("id not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("id not found in credentials info"))
|
||||
}
|
||||
accessToken, exist := credInfo["token"]
|
||||
if !exist {
|
||||
return nil, errors.New("token not found in credentials info")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credentials info"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, secret, clientID, accessToken)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -31,15 +31,15 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypePla
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
id, ok := credInfo["id"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing id in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing id in credInfo"))
|
||||
}
|
||||
key, ok := credInfo["token"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing key in credInfo"))
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, id, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -30,12 +30,12 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypePos
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
uri, ok := credInfo["connection_string"]
|
||||
if !ok {
|
||||
return nil, errors.New("connection string not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("connection string not found in credInfo"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, uri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceDatabase, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -37,11 +37,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypePos
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypePos
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -32,12 +32,12 @@ func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]string) (*ana
|
||||
// token will be already normalized by the time it reaches here
|
||||
token, ok := credInfo["token"]
|
||||
if !ok {
|
||||
return nil, errors.New("token not found in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("token not found in credInfo"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(ctx, a.Cfg, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceCrypto, "", err)
|
||||
}
|
||||
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
|
||||
@@ -47,11 +47,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeSen
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -34,17 +34,17 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeSho
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
|
||||
storeUrl, ok := credInfo["store_url"]
|
||||
if !ok {
|
||||
return nil, errors.New("store_url not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("store_url not found in credentialInfo"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key, storeUrl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeSla
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -26,11 +26,13 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeSou
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("missing key in credInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", fmt.Errorf("missing key in credInfo"),
|
||||
)
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err,
|
||||
)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -28,11 +28,11 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeSqu
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@ func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.AnalyzerTypeStr
|
||||
func (a Analyzer) Analyze(_ context.Context, credInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
return secretInfoToAnalyzerResult(info), nil
|
||||
}
|
||||
|
||||
@@ -25,12 +25,12 @@ func (a *Analyzer) Type() analyzers.AnalyzerType {
|
||||
func (a *Analyzer) Analyze(ctx context.Context, credentialInfo map[string]string) (*analyzers.AnalyzerResult, error) {
|
||||
key, ok := credentialInfo["key"]
|
||||
if !ok {
|
||||
return nil, errors.New("key not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("key not found in credentialInfo"))
|
||||
}
|
||||
|
||||
sid, ok := credentialInfo["sid"]
|
||||
if !ok {
|
||||
return nil, errors.New("sid not found in credentialInfo")
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationValidateCredentials, analyzers.ServiceConfig, "", errors.New("sid not found in credentialInfo"))
|
||||
}
|
||||
|
||||
if a.Cfg == nil {
|
||||
@@ -39,13 +39,13 @@ func (a *Analyzer) Analyze(ctx context.Context, credentialInfo map[string]string
|
||||
|
||||
info, err := AnalyzePermissions(a.Cfg, sid, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
// List parent and subaccounts
|
||||
accounts, err := listTwilioAccounts(a.Cfg, sid, key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, analyzers.NewAnalysisError(a.Type().String(), analyzers.OperationAnalyzePermissions, analyzers.ServiceAPI, "", err)
|
||||
}
|
||||
|
||||
var permissions []Permission
|
||||
|
||||
Reference in New Issue
Block a user