mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
47 lines
975 B
Go
47 lines
975 B
Go
package notif
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
|
|
E "github.com/yusing/go-proxy/internal/error"
|
|
)
|
|
|
|
type ProviderBase struct {
|
|
Name string `json:"name" validate:"required"`
|
|
URL string `json:"url" validate:"url"`
|
|
Token string `json:"token"`
|
|
}
|
|
|
|
var (
|
|
ErrMissingToken = E.New("token is required")
|
|
ErrURLMissingScheme = E.New("url missing scheme, expect 'http://' or 'https://'")
|
|
)
|
|
|
|
// Validate implements the utils.CustomValidator interface.
|
|
func (base *ProviderBase) Validate() E.Error {
|
|
if base.Token == "" {
|
|
return ErrMissingToken
|
|
}
|
|
if !strings.HasPrefix(base.URL, "http://") && !strings.HasPrefix(base.URL, "https://") {
|
|
return ErrURLMissingScheme
|
|
}
|
|
u, err := url.Parse(base.URL)
|
|
if err != nil {
|
|
return E.Wrap(err)
|
|
}
|
|
base.URL = u.String()
|
|
return nil
|
|
}
|
|
|
|
func (base *ProviderBase) GetName() string {
|
|
return base.Name
|
|
}
|
|
|
|
func (base *ProviderBase) GetURL() string {
|
|
return base.URL
|
|
}
|
|
|
|
func (base *ProviderBase) GetToken() string {
|
|
return base.Token
|
|
}
|