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:
63
domain.go
63
domain.go
@@ -1,5 +1,12 @@
|
||||
package mailfull
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
// Domain represents a Domain.
|
||||
type Domain struct {
|
||||
name string
|
||||
@@ -32,3 +39,59 @@ func NewDomain(name string) (*Domain, error) {
|
||||
func (d *Domain) Name() string {
|
||||
return d.name
|
||||
}
|
||||
|
||||
// Domains returns a Domain slice.
|
||||
func (r *Repository) Domains() ([]*Domain, error) {
|
||||
fileInfos, err := ioutil.ReadDir(r.DirMailDataPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
domains := make([]*Domain, 0, len(fileInfos))
|
||||
|
||||
for _, fileInfo := range fileInfos {
|
||||
if !fileInfo.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
name := fileInfo.Name()
|
||||
|
||||
domain, err := NewDomain(name)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
domains = append(domains, domain)
|
||||
}
|
||||
|
||||
return domains, nil
|
||||
}
|
||||
|
||||
// Domain returns a Domain of the input name.
|
||||
func (r *Repository) Domain(domainName string) (*Domain, error) {
|
||||
if !validDomainName(domainName) {
|
||||
return nil, ErrInvalidDomainName
|
||||
}
|
||||
|
||||
fileInfo, err := os.Stat(filepath.Join(r.DirMailDataPath, domainName))
|
||||
if err != nil {
|
||||
if err.(*os.PathError).Err == syscall.ENOENT {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !fileInfo.IsDir() {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
name := domainName
|
||||
|
||||
domain, err := NewDomain(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return domain, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user