Documentation
¶
Index ¶
- Constants
- Variables
- func ExtractTokenFromHeader(authHeader string) (string, error)
- func FormatCostReport(breakdown *CostBreakdown, recommendations *OptimizationRecommendations) string
- func ValidateAndExtractMerchantID(authHeader string, validator *SimpleJWTValidator) (string, error)
- type AuditLog
- type AuditTracker
- func (a *AuditTracker) ExportAuditLogs(ctx context.Context, merchantID string, format string) ([]byte, error)
- func (a *AuditTracker) GenerateComplianceReport(ctx context.Context, merchantID string, startDate, endDate time.Time) (*ComplianceReport, error)
- func (a *AuditTracker) GetAuditHistory(ctx context.Context, entityType, entityID string, limit int) ([]*AuditLog, error)
- func (a *AuditTracker) GetMerchantAuditLogs(ctx context.Context, merchantID string, startTime, endTime time.Time) ([]*AuditLog, error)
- func (a *AuditTracker) Track(action string, entityType string, metadata map[string]any) error
- func (a *AuditTracker) TrackChange(ctx context.Context, req TrackChangeRequest) error
- type ComplianceAnomaly
- type ComplianceReport
- type CostBreakdown
- type CostEstimator
- func (c *CostEstimator) EstimateMonthly(metrics Metrics) *CostBreakdown
- func (c *CostEstimator) EstimatePaymentPlatformCosts(monthlyTransactions int64, averageQueriesPerTransaction float64, ...) *CostBreakdown
- func (c *CostEstimator) GetOptimizationRecommendations(metrics Metrics, breakdown *CostBreakdown) *OptimizationRecommendations
- type IdempotencyMiddleware
- type JWTClaims
- type Metrics
- type OptimizationRecommendations
- type Recommendation
- type RetryWorker
- type SimpleJWTValidator
- type TokenError
- type TrackChangeRequest
- type WebhookJob
- type WebhookPayload
- type WebhookSender
Constants ¶
const ( TokenErrorInvalid = "invalid_token" TokenErrorExpired = "token_expired" TokenErrorMalformed = "malformed_token" TokenErrorMissing = "missing_token" TokenErrorPermissions = "insufficient_permissions" )
Common token error codes
Variables ¶
var ErrDuplicateRequest = errors.New("duplicate request")
ErrDuplicateRequest indicates a duplicate request was detected
Functions ¶
func ExtractTokenFromHeader ¶
ExtractTokenFromHeader extracts the JWT token from the Authorization header
func FormatCostReport ¶
func FormatCostReport(breakdown *CostBreakdown, recommendations *OptimizationRecommendations) string
FormatCostReport generates a human-readable cost report
func ValidateAndExtractMerchantID ¶
func ValidateAndExtractMerchantID(authHeader string, validator *SimpleJWTValidator) (string, error)
ValidateAndExtractMerchantID is a convenience function that extracts and validates the token
Types ¶
type AuditLog ¶
type AuditLog struct { ID string `dynamorm:"pk" json:"id"` EntityType string `dynamorm:"index:gsi-entity,pk" json:"entity_type"` EntityID string `dynamorm:"index:gsi-entity,sk" json:"entity_id"` Action string `json:"action"` UserID string `json:"user_id,omitempty"` MerchantID string `dynamorm:"index:gsi-merchant" json:"merchant_id"` IPAddress string `json:"ip_address,omitempty"` UserAgent string `json:"user_agent,omitempty"` Before map[string]any `dynamorm:"json" json:"before,omitempty"` After map[string]any `dynamorm:"json" json:"after,omitempty"` Metadata map[string]any `dynamorm:"json" json:"metadata,omitempty"` Timestamp time.Time `dynamorm:"created_at" json:"timestamp"` }
AuditLog represents an audit log entry
type AuditTracker ¶
type AuditTracker struct {
// contains filtered or unexported fields
}
AuditTracker provides audit trail functionality
func NewAuditTracker ¶
func NewAuditTracker(db core.ExtendedDB) *AuditTracker
NewAuditTracker creates a new audit tracker
func (*AuditTracker) ExportAuditLogs ¶
func (a *AuditTracker) ExportAuditLogs(ctx context.Context, merchantID string, format string) ([]byte, error)
ExportAuditLogs exports audit logs in a specific format
func (*AuditTracker) GenerateComplianceReport ¶
func (a *AuditTracker) GenerateComplianceReport(ctx context.Context, merchantID string, startDate, endDate time.Time) (*ComplianceReport, error)
GenerateComplianceReport creates a compliance report
func (*AuditTracker) GetAuditHistory ¶
func (a *AuditTracker) GetAuditHistory(ctx context.Context, entityType, entityID string, limit int) ([]*AuditLog, error)
GetAuditHistory retrieves audit history for an entity
func (*AuditTracker) GetMerchantAuditLogs ¶
func (a *AuditTracker) GetMerchantAuditLogs(ctx context.Context, merchantID string, startTime, endTime time.Time) ([]*AuditLog, error)
GetMerchantAuditLogs retrieves audit logs for a merchant
func (*AuditTracker) TrackChange ¶
func (a *AuditTracker) TrackChange(ctx context.Context, req TrackChangeRequest) error
TrackChange records changes to an entity
type ComplianceAnomaly ¶
type ComplianceAnomaly struct { Type string `json:"type"` Description string `json:"description"` Severity string `json:"severity"` Timestamp time.Time `json:"timestamp"` EntityID string `json:"entity_id,omitempty"` }
ComplianceAnomaly represents a potential compliance issue
type ComplianceReport ¶
type ComplianceReport struct { MerchantID string `json:"merchant_id"` StartDate time.Time `json:"start_date"` EndDate time.Time `json:"end_date"` TotalEvents int `json:"total_events"` EventsByType map[string]int `json:"events_by_type"` UserActivity map[string]int `json:"user_activity"` Anomalies []ComplianceAnomaly `json:"anomalies,omitempty"` Generated time.Time `json:"generated"` }
ComplianceReport generates a compliance report
type CostBreakdown ¶
type CostBreakdown struct { ReadCost float64 `json:"read_cost"` WriteCost float64 `json:"write_cost"` StorageCost float64 `json:"storage_cost"` GSICost float64 `json:"gsi_cost"` StreamsCost float64 `json:"streams_cost"` BackupCost float64 `json:"backup_cost"` TotalMonthlyCost float64 `json:"total_monthly_cost"` TotalYearlyCost float64 `json:"total_yearly_cost"` CostPerItem float64 `json:"cost_per_item"` CostPerRequest float64 `json:"cost_per_request"` Details map[string]float64 `json:"details"` }
CostBreakdown provides detailed cost breakdown
type CostEstimator ¶
type CostEstimator struct {
// contains filtered or unexported fields
}
CostEstimator estimates AWS DynamoDB costs
func NewCostEstimator ¶
func NewCostEstimator() *CostEstimator
NewCostEstimator creates a new cost estimator with default pricing
func (*CostEstimator) EstimateMonthly ¶
func (c *CostEstimator) EstimateMonthly(metrics Metrics) *CostBreakdown
EstimateMonthly calculates monthly DynamoDB costs
func (*CostEstimator) EstimatePaymentPlatformCosts ¶
func (c *CostEstimator) EstimatePaymentPlatformCosts( monthlyTransactions int64, averageQueriesPerTransaction float64, retentionDays int, ) *CostBreakdown
EstimatePaymentPlatformCosts estimates costs for a payment platform
func (*CostEstimator) GetOptimizationRecommendations ¶
func (c *CostEstimator) GetOptimizationRecommendations(metrics Metrics, breakdown *CostBreakdown) *OptimizationRecommendations
GetOptimizationRecommendations analyzes metrics and provides recommendations
type IdempotencyMiddleware ¶
type IdempotencyMiddleware struct {
// contains filtered or unexported fields
}
IdempotencyMiddleware handles idempotent request processing
func NewIdempotencyMiddleware ¶
func NewIdempotencyMiddleware(db core.ExtendedDB, ttl time.Duration) *IdempotencyMiddleware
NewIdempotencyMiddleware creates a new idempotency middleware
func (*IdempotencyMiddleware) CleanupExpired ¶
func (m *IdempotencyMiddleware) CleanupExpired(ctx context.Context) error
CleanupExpired removes expired idempotency records
func (*IdempotencyMiddleware) GenerateKey ¶
func (m *IdempotencyMiddleware) GenerateKey(merchantID string, data any) string
GenerateKey generates an idempotency key from request data
type JWTClaims ¶
type JWTClaims struct { MerchantID string `json:"merchant_id"` Email string `json:"email"` Permissions []string `json:"permissions,omitempty"` Issuer string `json:"iss,omitempty"` Subject string `json:"sub,omitempty"` Audience []string `json:"aud,omitempty"` ExpiresAt int64 `json:"exp,omitempty"` NotBefore int64 `json:"nbf,omitempty"` IssuedAt int64 `json:"iat,omitempty"` JWTID string `json:"jti,omitempty"` }
JWTClaims represents the custom claims in our JWT tokens
type Metrics ¶
type Metrics struct { // Table metrics ReadCapacityUnits int // Provisioned RCU (0 for on-demand) WriteCapacityUnits int // Provisioned WCU (0 for on-demand) StorageGB float64 // Total storage in GB ItemCount int64 // Number of items AverageItemSizeKB float64 // Average item size in KB // Request metrics (for on-demand billing) MonthlyReadRequests int64 // Total read requests per month MonthlyWriteRequests int64 // Total write requests per month // GSI metrics GSICount int // Number of GSIs GSIReadCapacityUnits int // Total RCU across all GSIs GSIWriteCapacityUnits int // Total WCU across all GSIs // Additional features StreamsEnabled bool // DynamoDB Streams enabled StreamReadRequests int64 // Monthly stream read requests BackupEnabled bool // Backup enabled BackupStorageGB float64 // Backup storage in GB // Usage patterns PeakHoursPerDay int // Hours of peak usage per day IsMultiRegion bool // Multi-region replication RegionCount int // Number of regions }
Metrics represents usage metrics for cost calculation
type OptimizationRecommendations ¶
type OptimizationRecommendations struct { Recommendations []Recommendation `json:"recommendations"` PotentialSavings float64 `json:"potential_savings"` }
OptimizationRecommendations provides cost optimization suggestions
type Recommendation ¶
type Recommendation struct { Title string `json:"title"` Description string `json:"description"` Impact string `json:"impact"` Savings float64 `json:"estimated_savings"` Effort string `json:"effort"` }
Recommendation represents a cost optimization suggestion
type RetryWorker ¶
type RetryWorker struct {
// contains filtered or unexported fields
}
RetryWorker processes failed webhooks from the retry queue
func NewRetryWorker ¶
func NewRetryWorker(db *dynamorm.DB, sender *WebhookSender, interval time.Duration) *RetryWorker
NewRetryWorker creates a new retry worker
type SimpleJWTValidator ¶
type SimpleJWTValidator struct {
// contains filtered or unexported fields
}
SimpleJWTValidator handles JWT validation with HMAC
func NewSimpleJWTValidator ¶
func NewSimpleJWTValidator(secretKey string, issuer, audience string) *SimpleJWTValidator
NewSimpleJWTValidator creates a new JWT validator with HMAC-SHA256
func (*SimpleJWTValidator) ExtractMerchantID ¶
func (v *SimpleJWTValidator) ExtractMerchantID(tokenString string) (string, error)
ExtractMerchantID extracts the merchant ID from a JWT token
func (*SimpleJWTValidator) ValidateToken ¶
func (v *SimpleJWTValidator) ValidateToken(tokenString string) (*JWTClaims, error)
ValidateToken validates a JWT token and returns the claims
type TokenError ¶
type TokenError struct { Code string `json:"code"` Message string `json:"message"` Details string `json:"details,omitempty"` }
TokenError represents a JWT validation error with details
func NewTokenError ¶
func NewTokenError(code, message, details string) *TokenError
NewTokenError creates a new token error
func (*TokenError) Error ¶
func (e *TokenError) Error() string
type TrackChangeRequest ¶
type TrackChangeRequest struct { EntityType string `json:"entity_type"` EntityID string `json:"entity_id"` Action string `json:"action"` UserID string `json:"user_id,omitempty"` MerchantID string `json:"merchant_id"` IPAddress string `json:"ip_address,omitempty"` UserAgent string `json:"user_agent,omitempty"` Before map[string]any `json:"before,omitempty"` After map[string]any `json:"after,omitempty"` Metadata map[string]any `json:"metadata,omitempty"` }
TrackChangeRequest contains details for tracking a change
type WebhookJob ¶
WebhookJob represents a webhook to be sent
type WebhookPayload ¶
type WebhookPayload struct { ID string `json:"id"` EventType string `json:"event_type"` Created time.Time `json:"created"` Data any `json:"data"` }
WebhookPayload represents the webhook request body
type WebhookSender ¶
type WebhookSender struct {
// contains filtered or unexported fields
}
WebhookSender handles async webhook deliveries
func NewWebhookSender ¶
func NewWebhookSender(db core.ExtendedDB, workers int) *WebhookSender
NewWebhookSender creates a new webhook sender
func (*WebhookSender) Send ¶
func (w *WebhookSender) Send(job *WebhookJob) error
Send queues a webhook for delivery
func (*WebhookSender) Stop ¶
func (w *WebhookSender) Stop()
Stop gracefully shuts down the webhook sender