mirror of
https://github.com/directorz/mailfull-go.git
synced 2025-12-17 09:37:02 +00:00
Moved functions
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
package mailfull
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// AliasDomain represents a AliasDomain.
|
||||
type AliasDomain struct {
|
||||
name string
|
||||
@@ -39,3 +46,53 @@ func (ad *AliasDomain) Name() string {
|
||||
func (ad *AliasDomain) Target() string {
|
||||
return ad.target
|
||||
}
|
||||
|
||||
// AliasDomains returns a AliasDomain slice.
|
||||
func (r *Repository) AliasDomains() ([]*AliasDomain, error) {
|
||||
file, err := os.Open(filepath.Join(r.DirMailDataPath, FileNameAliasDomains))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
aliasDomains := make([]*AliasDomain, 0, 10)
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
for scanner.Scan() {
|
||||
words := strings.Split(scanner.Text(), ":")
|
||||
if len(words) != 2 {
|
||||
return nil, ErrInvalidFormatAliasDomain
|
||||
}
|
||||
|
||||
name := words[0]
|
||||
target := words[1]
|
||||
|
||||
aliasDomain, err := NewAliasDomain(name, target)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
aliasDomains = append(aliasDomains, aliasDomain)
|
||||
}
|
||||
|
||||
if err := scanner.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return aliasDomains, nil
|
||||
}
|
||||
|
||||
// AliasDomain returns a AliasDomain of the input name.
|
||||
func (r *Repository) AliasDomain(aliasDomainName string) (*AliasDomain, error) {
|
||||
aliasDomains, err := r.AliasDomains()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, aliasDomain := range aliasDomains {
|
||||
if aliasDomain.Name() == aliasDomainName {
|
||||
return aliasDomain, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user