Spaces:
Runtime error
Runtime error
Download pkg/plugins/api/session/session.go from dvc890/go-chatgpt-api-plus: direct link, hf CLI and curl.
- Browser
- Download file 3.25 kB
-
https://huggingface.co/spaces/dvc890/go-chatgpt-api-plus/resolve/main/pkg/plugins/api/session/session.go
- Command line
-
hf download hf://spaces/dvc890/go-chatgpt-api-plus/pkg/plugins/api/session/session.go
-
curl -L -o session.go https://huggingface.co/spaces/dvc890/go-chatgpt-api-plus/resolve/main/pkg/plugins/api/session/session.go
3.25 kB
| package session | |
| import ( | |
| "WarpGPT/pkg/common" | |
| "WarpGPT/pkg/plugins" | |
| "WarpGPT/pkg/tools" | |
| "encoding/json" | |
| http "github.com/bogdanfinn/fhttp" | |
| tls_client "github.com/bogdanfinn/tls-client" | |
| "github.com/gin-gonic/gin" | |
| "io" | |
| shttp "net/http" | |
| ) | |
| var context *plugins.Component | |
| var SessionTokenInstance SessionToken | |
| type Context struct { | |
| GinContext *gin.Context | |
| RequestUrl string | |
| RequestClient tls_client.HttpClient | |
| RequestBody io.ReadCloser | |
| RequestParam string | |
| RequestMethod string | |
| RequestHeaders http.Header | |
| } | |
| type SessionToken struct { | |
| Context Context | |
| } | |
| func (p *SessionToken) GetContext() Context { | |
| return p.Context | |
| } | |
| func (p *SessionToken) SetContext(conversation Context) { | |
| p.Context = conversation | |
| } | |
| func (p *SessionToken) ProcessMethod() { | |
| context.Logger.Debug("SessionToken") | |
| var requestBody map[string]interface{} | |
| if err := p.decodeRequestBody(&requestBody); err != nil { | |
| return | |
| } | |
| var auth *tools.Authenticator | |
| username, usernameExists := requestBody["username"] | |
| password, passwordExists := requestBody["password"] | |
| puid, puidExists := requestBody["puid"] | |
| refreshCookie, refreshCookieExists := requestBody["refreshCookie"] | |
| if !refreshCookieExists { | |
| if usernameExists && passwordExists { | |
| if puidExists { | |
| auth = tools.NewAuthenticator(username.(string), password.(string), puid.(string)) | |
| } else { | |
| auth = tools.NewAuthenticator(username.(string), password.(string), "") | |
| } | |
| if err := auth.Begin(); err != nil { | |
| p.GetContext().GinContext.JSON(400, err) | |
| return | |
| } | |
| auth.GetModels() | |
| all := auth.GetAuthResult() | |
| var result map[string]interface{} | |
| accessToken := all.AccessToken | |
| model := all.Model | |
| refreshToken := all.FreshToken | |
| result = accessToken | |
| result["refreshCookie"] = refreshToken | |
| result["models"] = model["models"] | |
| p.GetContext().GinContext.JSON(200, result) | |
| } else { | |
| p.GetContext().GinContext.JSON(400, gin.H{"error": "Please provide a refreshCookie or username and password."}) | |
| return | |
| } | |
| } else { | |
| auth = tools.NewAuthenticator("", "", "") | |
| err := auth.GetAccessTokenByRefreshToken(refreshCookie.(string)) | |
| if err != nil { | |
| p.GetContext().GinContext.JSON(400, err) | |
| return | |
| } | |
| auth.GetModels() | |
| all := auth.GetAuthResult() | |
| var result map[string]interface{} | |
| accessToken := all.AccessToken | |
| model := all.Model | |
| refreshToken := all.FreshToken | |
| result = accessToken | |
| result["refreshCookie"] = refreshToken | |
| result["models"] = model["models"] | |
| p.GetContext().GinContext.JSON(200, result) | |
| } | |
| } | |
| func (p *SessionToken) decodeRequestBody(requestBody *map[string]interface{}) error { | |
| conversation := p.GetContext() | |
| if conversation.RequestBody != shttp.NoBody { | |
| if err := json.NewDecoder(conversation.RequestBody).Decode(requestBody); err != nil { | |
| conversation.GinContext.JSON(400, gin.H{"error": "JSON invalid"}) | |
| return err | |
| } | |
| } | |
| return nil | |
| } | |
| type NotHaveUrl struct { | |
| } | |
| func (u NotHaveUrl) Generate(path string, rawquery string) string { | |
| return "" | |
| } | |
| func (p *SessionToken) Run(com *plugins.Component) { | |
| context = com | |
| context.Engine.POST("/getsession", func(c *gin.Context) { | |
| conversation := common.GetContextPack(c, NotHaveUrl{}) | |
| common.Do[Context](new(SessionToken), Context(conversation)) | |
| }) | |
| } | |