Files
apinto/drivers/strategy/cache-strategy/cache/cache.go
黄孟柱 8cd6a0550f 优化
2022-10-12 10:43:42 +08:00

46 lines
961 B
Go

package cache
import (
"encoding/json"
"github.com/coocood/freecache"
"github.com/eolinker/eosc/eocontext"
http_service "github.com/eolinker/eosc/eocontext/http-context"
)
var freeCache *freecache.Cache
func NewCache() {
freeCache = freecache.NewCache(0)
}
type ResponseData struct {
Header map[string]string
Body []byte
}
func (r *ResponseData) Complete(ctx eocontext.EoContext) error {
httpCtx, err := http_service.Assert(ctx)
if err != nil {
return err
}
httpCtx.Response().SetBody(r.Body)
for key, val := range r.Header {
httpCtx.Response().SetHeader(key, val)
}
return nil
}
func SetResponseData(uri string, data *ResponseData, validTime int) {
bytes, _ := json.Marshal(data)
_ = freeCache.Set([]byte(uri), bytes, validTime)
}
func GetResponseData(uri string) *ResponseData {
bytes, _ := freeCache.Get([]byte(uri))
data := new(ResponseData)
if err := json.Unmarshal(bytes, data); err != nil {
return nil
}
return data
}