From c601bb794bc50c8cd6922bec75273b59dbba15db Mon Sep 17 00:00:00 2001 From: Code2qing Date: Thu, 10 Nov 2022 09:34:48 +0800 Subject: [PATCH] feat(123): support mail login (close #2218 pr #2276) --- drivers/123/util.go | 19 +++++++++++++++---- pkg/utils/email.go | 9 +++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 pkg/utils/email.go diff --git a/drivers/123/util.go b/drivers/123/util.go index 6d27f8f4..cfb225cf 100644 --- a/drivers/123/util.go +++ b/drivers/123/util.go @@ -6,6 +6,7 @@ import ( "net/http" "github.com/alist-org/alist/v3/drivers/base" + "github.com/alist-org/alist/v3/pkg/utils" "github.com/go-resty/resty/v2" jsoniter "github.com/json-iterator/go" ) @@ -13,14 +14,24 @@ import ( // do others that not defined in Driver interface func (d *Pan123) login() error { + var body base.Json url := "https://www.123pan.com/api/user/sign_in" + if utils.IsEmailFormat(d.Username) { + body = base.Json{ + "mail": d.Username, + "password": d.Password, + "type": 2, + } + } else { + body = base.Json{ + "passport": d.Username, + "password": d.Password, + } + } var resp TokenResp _, err := base.RestyClient.R(). SetResult(&resp). - SetBody(base.Json{ - "passport": d.Username, - "password": d.Password, - }).Post(url) + SetBody(body).Post(url) if err != nil { return err } diff --git a/pkg/utils/email.go b/pkg/utils/email.go new file mode 100644 index 00000000..833a7039 --- /dev/null +++ b/pkg/utils/email.go @@ -0,0 +1,9 @@ +package utils + +import "regexp" + +func IsEmailFormat(email string) bool { + pattern := `^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(email) +}