diff --git a/configs/session.go b/configs/session.go index ffbda30..476cfa2 100644 --- a/configs/session.go +++ b/configs/session.go @@ -1,10 +1,16 @@ package configs -import "github.com/gofiber/fiber/v2/middleware/session" +import ( + "time" + + "github.com/gofiber/fiber/v2/middleware/session" +) var Store *session.Store func SetupStorage() { - Store = session.New() + Store = session.New(session.Config{ + Expiration: time.Hour * 24 * 30, + }) Store.RegisterType("") } diff --git a/handler/self.go b/handler/self.go new file mode 100644 index 0000000..34d97e2 --- /dev/null +++ b/handler/self.go @@ -0,0 +1,34 @@ +package handler + +import ( + "net/url" + "regexp" +) + +func (p *PixivClient) FollowUser(id string) error { + formData := url.Values{} + formData.Add("mode", "add") + formData.Add("type", "user") + formData.Add("user_id", id) + formData.Add("tag", "") + formData.Add("restrict", "0") + formData.Add("format", "json") + + init, err := p.GetCSRF() + println(init) + if err != nil { + return err + } + + pattern := regexp.MustCompile(`.*pixiv.context.token = "([a-z0-9]{32})"?.*`) + quotesPattern := regexp.MustCompile(`([a-z0-9]{32})`) + token := quotesPattern.FindString(pattern.FindString(init)) + println(token) + + _, err = p.RequestWithFormData(FollowUserURL, formData, token) + if err != nil { + return err + } + + return nil +}