first commit

This commit is contained in:
cdle
2023-06-01 08:41:54 +08:00
parent 61b0e99833
commit d253ed8d5b
80 changed files with 14245 additions and 0 deletions
+166
View File
@@ -0,0 +1,166 @@
package core
import (
"io/ioutil"
"time"
"github.com/cdle/sillyplus/utils"
"github.com/gin-gonic/gin"
"github.com/goccy/go-json"
)
var web_sessions = MakeBucket("web_sessions")
type Web struct {
uuid string
method string
path string
handles []func(*Request, *Response)
}
var webs []Web
func CancelPluginWebs(uuid string) {
for i := range webs {
if webs[i].uuid == uuid {
webs[i].handles = nil
}
}
}
type Request struct {
c *gin.Context
ress [][]string
parsedForm bool
handled bool
uuid string
bodyData []byte
}
func (r *Request) Body() string {
if len(r.bodyData) == 0 {
r.bodyData, _ = ioutil.ReadAll(r.c.Request.Body)
}
return string(r.bodyData)
}
func (r *Request) Json() interface{} {
var i interface{}
if len(r.bodyData) == 0 {
r.bodyData, _ = ioutil.ReadAll(r.c.Request.Body)
}
if json.Unmarshal(r.bodyData, &i) != nil {
return nil
}
return i
}
func (r *Request) Ip() string {
return r.c.ClientIP()
}
func (r *Request) OriginalUrl() string {
return r.c.Request.URL.String()
}
func (r *Request) Query(param string) string {
return r.c.Query(param)
}
func (r *Request) Param(i int) string {
return r.ress[i-1][1]
}
func (r *Request) Querys() map[string][]string {
return r.c.Request.URL.Query()
}
func (r *Request) PostForm(s string) string {
if !r.parsedForm {
r.c.Request.ParseForm()
}
return r.c.PostForm(s)
}
func (r *Request) PostForms() map[string][]string {
if !r.parsedForm {
r.c.Request.ParseForm()
}
return r.c.Request.PostForm
}
func (r *Request) Path() string {
return r.c.Request.URL.Path
}
func (r *Request) Header(s string) string {
return r.c.GetHeader(s)
}
func (r *Request) Get(s string) string {
return r.c.GetHeader(s)
}
func (r *Request) Is(s string) bool { //判断是否传入的MIME类型
return true
}
func (r *Request) Headers() map[string][]string {
return r.c.Request.Header
}
func (r *Request) Method() string {
return r.c.Request.Method
}
func (r *Request) Logined() bool {
auth, _ := CheckAuth(r.Cookie("token"))
return auth != nil
}
func (r *Request) Cookie(s string) string {
var cookie, _ = r.c.Cookie(s)
return cookie
}
func (r *Request) Cookies() map[string]string {
var cookies = map[string]string{}
for _, v := range r.c.Request.Cookies() {
cookies[v.Name] = v.Value
}
return cookies
}
func (r *Request) Continue() {
r.handled = false
}
func (r *Request) SetSession(k, v string) string {
j := map[string]interface{}{}
json.Unmarshal(web_sessions.GetBytes(r.uuid), &j)
j[k] = v
j["time"] = time.Now().Unix()
_, err := web_sessions.Set(r.uuid, utils.JsonMarshal(j))
if err != nil {
return err.Error()
}
return ""
}
func (r *Request) GetSession(k string) string {
j := map[string]interface{}{}
json.Unmarshal(web_sessions.GetBytes(r.uuid), &j)
v, ok := j[k].(string)
if !ok {
return ""
}
return v
}
func (r *Request) GetSessionID() string {
return r.uuid
}
func (r *Request) DestroySession() string {
return ""
}