validation

package
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package validation implements validation algorithms for Australian PI types. It provides checksum validation for TFN, ABN, ACN, Medicare numbers, and other PI types using official Australian government algorithms to ensure detected values are structurally valid.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterAdditionalValidators

func RegisterAdditionalValidators(registry *ValidatorRegistry)

RegisterAdditionalValidators registers all additional validators

Types

type ABNValidator

type ABNValidator struct{}

ABNValidator validates Australian Business Numbers

func (*ABNValidator) Normalize

func (v *ABNValidator) Normalize(value string) string

Normalize returns normalized ABN

func (*ABNValidator) Type

func (v *ABNValidator) Type() string

Type returns the PI type

func (*ABNValidator) Validate

func (v *ABNValidator) Validate(value string) (bool, error)

Validate checks if the ABN is valid using modulus 89

type ACNValidator

type ACNValidator struct{}

ACNValidator validates Australian Company Numbers

func (*ACNValidator) Normalize

func (v *ACNValidator) Normalize(value string) string

Normalize returns normalized ACN

func (*ACNValidator) Type

func (v *ACNValidator) Type() string

Type returns the PI type

func (*ACNValidator) Validate

func (v *ACNValidator) Validate(value string) (bool, error)

Validate checks if the ACN is valid

type ARBNValidator

type ARBNValidator struct{}

ARBNValidator validates Australian Registered Body Numbers

func (*ARBNValidator) Normalize

func (v *ARBNValidator) Normalize(value string) string

Normalize returns normalized ARBN

func (*ARBNValidator) Type

func (v *ARBNValidator) Type() string

Type returns the PI type

func (*ARBNValidator) Validate

func (v *ARBNValidator) Validate(value string) (bool, error)

Validate checks if the ARBN is valid

type BSBValidator

type BSBValidator struct{}

BSBValidator validates Australian Bank State Branch codes

func (*BSBValidator) Normalize

func (v *BSBValidator) Normalize(value string) string

Normalize returns normalized BSB in XXX-XXX format

func (*BSBValidator) Type

func (v *BSBValidator) Type() string

Type returns the PI type

func (*BSBValidator) Validate

func (v *BSBValidator) Validate(value string) (bool, error)

Validate checks if the BSB is valid

type BankAccountValidator

type BankAccountValidator struct{}

BankAccountValidator validates Australian bank account numbers

func (*BankAccountValidator) Normalize

func (v *BankAccountValidator) Normalize(value string) string

Normalize returns normalized account number

func (*BankAccountValidator) Type

func (v *BankAccountValidator) Type() string

Type returns the PI type

func (*BankAccountValidator) Validate

func (v *BankAccountValidator) Validate(value string) (bool, error)

Validate checks if the bank account number is valid

type CreditCardValidator

type CreditCardValidator struct{}

CreditCardValidator validates credit card numbers using the Luhn algorithm

func NewCreditCardValidator

func NewCreditCardValidator() *CreditCardValidator

NewCreditCardValidator creates a new credit card validator

func (*CreditCardValidator) GetCardType

func (v *CreditCardValidator) GetCardType(number string) string

GetCardType returns the card type based on the number

func (*CreditCardValidator) IsTestCard

func (v *CreditCardValidator) IsTestCard(number string) bool

IsTestCard checks if the card number is a known test card

func (*CreditCardValidator) Normalize

func (v *CreditCardValidator) Normalize(value string) string

Normalize returns a normalized credit card number (digits only)

func (*CreditCardValidator) Type

func (v *CreditCardValidator) Type() string

Type returns the PI type this validator handles

func (*CreditCardValidator) Validate

func (v *CreditCardValidator) Validate(value string) (bool, error)

Validate checks if the credit card number is valid

type DriverLicenseValidator

type DriverLicenseValidator struct {
	// contains filtered or unexported fields
}

DriverLicenseValidator validates Australian driver's licenses

func NewDriverLicenseValidator

func NewDriverLicenseValidator() *DriverLicenseValidator

NewDriverLicenseValidator creates a new driver license validator

func (*DriverLicenseValidator) Normalize

func (v *DriverLicenseValidator) Normalize(value string) string

Normalize returns normalized license number

func (*DriverLicenseValidator) Type

func (v *DriverLicenseValidator) Type() string

Type returns the PI type

func (*DriverLicenseValidator) Validate

func (v *DriverLicenseValidator) Validate(value string) (bool, error)

Validate checks if the license number is valid for any state

func (*DriverLicenseValidator) ValidateForState

func (v *DriverLicenseValidator) ValidateForState(value, state string) (bool, error)

ValidateForState checks if the license is valid for a specific state

type MedicareValidator

type MedicareValidator struct{}

MedicareValidator validates Australian Medicare numbers

func (*MedicareValidator) Normalize

func (v *MedicareValidator) Normalize(value string) string

Normalize returns normalized Medicare number

func (*MedicareValidator) Type

func (v *MedicareValidator) Type() string

Type returns the PI type

func (*MedicareValidator) Validate

func (v *MedicareValidator) Validate(value string) (bool, error)

Validate checks if the Medicare number is valid

type PassportValidator

type PassportValidator struct{}

PassportValidator validates Australian passport numbers

func (*PassportValidator) Normalize

func (v *PassportValidator) Normalize(value string) string

Normalize returns normalized passport number

func (*PassportValidator) Type

func (v *PassportValidator) Type() string

Type returns the PI type

func (*PassportValidator) Validate

func (v *PassportValidator) Validate(value string) (bool, error)

Validate checks if the passport number is valid

type TFNValidator

type TFNValidator struct{}

TFNValidator validates Australian Tax File Numbers

func (*TFNValidator) Normalize

func (v *TFNValidator) Normalize(value string) string

Normalize returns normalized TFN

func (*TFNValidator) Type

func (v *TFNValidator) Type() string

Type returns the PI type

func (*TFNValidator) Validate

func (v *TFNValidator) Validate(value string) (bool, error)

Validate checks if the TFN is valid using the official algorithm

type Validator

type Validator interface {
	Validate(value string) (bool, error)
	Type() string
	Normalize(value string) string
}

Validator interface for all PI validators

type ValidatorRegistry

type ValidatorRegistry struct {
	// contains filtered or unexported fields
}

ValidatorRegistry holds all validators

func NewValidatorRegistry

func NewValidatorRegistry() *ValidatorRegistry

NewValidatorRegistry creates a new validator registry

func (*ValidatorRegistry) Get

func (r *ValidatorRegistry) Get(piType string) (Validator, bool)

Get returns a validator by type

func (*ValidatorRegistry) Register

func (r *ValidatorRegistry) Register(v Validator)

Register adds a validator to the registry

func (*ValidatorRegistry) ValidateAll

func (r *ValidatorRegistry) ValidateAll(value string) ([]string, bool)

ValidateAll validates a value against all validators and returns all matches

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL