Initial commit.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package configuration
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
)
|
||||
|
||||
var (
|
||||
errNNTPAddressIsEmpty = errors.New("address is empty")
|
||||
errNNTPInvalidAddress = errors.New("address is invalid")
|
||||
errNNTPInvalidConnTimeout = errors.New("connect timeout is invalid")
|
||||
errNNTPUserOrPassIsEmpty = errors.New("username or password is empty")
|
||||
)
|
||||
|
||||
// NNTP is an NNTP output configuration.
|
||||
type NNTP struct {
|
||||
Address string `json:"address"`
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
ConnectTimeout int64 `json:"connect_timeout"`
|
||||
}
|
||||
|
||||
// Validate validates configuration.
|
||||
func (n *NNTP) Validate() error {
|
||||
if n.Address == "" {
|
||||
return fmt.Errorf("validate NNTP output configuration: %w", errNNTPAddressIsEmpty)
|
||||
}
|
||||
|
||||
_, _, err := net.SplitHostPort(n.Address)
|
||||
if err != nil {
|
||||
return fmt.Errorf("validate NNTP output configuration: %w: %w", errNNTPInvalidAddress, err)
|
||||
}
|
||||
|
||||
if (n.Username != "" && n.Password == "") || (n.Username == "" && n.Password != "") {
|
||||
return fmt.Errorf("validate NNTP output configuration: %w", errNNTPUserOrPassIsEmpty)
|
||||
}
|
||||
|
||||
if n.ConnectTimeout < 1 {
|
||||
return fmt.Errorf("validate NNTP output configuration: %w", errNNTPInvalidConnTimeout)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user