135 lines
3.6 KiB
Go
135 lines
3.6 KiB
Go
package internal
|
|
|
|
//
|
|
//import (
|
|
// misc2 "amuz.es/src/mercury/endpoint/misc"
|
|
// "amuz.es/src/mercury/service/models"
|
|
// "amuz.es/src/go/misc"
|
|
// "amuz.es/src/mercury/util/mycrypt"
|
|
// "github.com/pkg/errors"
|
|
// "io"
|
|
// "log"
|
|
// "reflect"
|
|
//)
|
|
//
|
|
//// 인터페이스가 실제구현체랑 호환되는가
|
|
//var _ misc2.Session = (*SessionImpl)(nil)
|
|
//
|
|
//type SessionImpl struct {
|
|
// FBox mycrypt.SecretBox
|
|
// FUser models.User
|
|
// FToken misc.UUID
|
|
// FData map[string]any
|
|
// FSyncer func(newdata SessionImpl) error
|
|
//}
|
|
//
|
|
//func (sess *SessionImpl) Id() misc.UUID { return sess.FToken }
|
|
//func (sess *SessionImpl) User() models.User { return sess.FUser }
|
|
//func (sess *SessionImpl) SetUser(user models.User) {
|
|
// sess.Create()
|
|
// sess.FUser = user
|
|
//}
|
|
//func (sess *SessionImpl) Delete() {
|
|
// if !sess.FToken.IsZero() {
|
|
// sess.FToken = misc.UUID{}
|
|
// }
|
|
//}
|
|
//func (sess *SessionImpl) Create() {
|
|
// if sess.FToken.IsZero() {
|
|
// sess.FToken.Random()
|
|
// }
|
|
// if sess.FData == nil {
|
|
// sess.FData = make(map[string]any)
|
|
// }
|
|
//}
|
|
//func (sess *SessionImpl) Get(key string) any {
|
|
// if sess.FData == nil {
|
|
// return nil
|
|
// }
|
|
// data, ok := sess.FData[key]
|
|
// if !ok {
|
|
// return nil
|
|
// } else {
|
|
// return data
|
|
// }
|
|
//}
|
|
//func (sess *SessionImpl) Set(key string, data any) {
|
|
// sess.Create()
|
|
// reflectVal := reflect.ValueOf(data)
|
|
// if reflectVal.IsValid() && reflectVal.Kind() == reflect.Ptr {
|
|
// reflectVal = reflectVal.Elem()
|
|
// }
|
|
//
|
|
// switch reflectVal.Kind() {
|
|
// case reflect.Struct:
|
|
// sess.FData[key] = data
|
|
// case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
|
|
// if reflectVal.Len() == 0 {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// case reflect.Bool:
|
|
// if !reflectVal.Bool() {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
// if reflectVal.Int() == 0 {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
|
|
// if reflectVal.Uint() == 0 {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// case reflect.Float32, reflect.Float64:
|
|
// if reflectVal.Float() == 0 {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// case reflect.Interface, reflect.Ptr:
|
|
// if reflectVal.IsNil() {
|
|
// delete(sess.FData, key)
|
|
// } else {
|
|
// sess.FData[key] = data
|
|
// }
|
|
// default:
|
|
// //do nothing
|
|
// }
|
|
//}
|
|
//func (sess *SessionImpl) ApplyChanges() (err error) {
|
|
// if sess.FSyncer == nil {
|
|
// err = errors.New("cannot sync session,FSyncer is nil!! ")
|
|
// return
|
|
// } else if syncererr := sess.FSyncer(*sess); syncererr != nil {
|
|
// err = errors.Wrap(syncererr, "cannot sync session: ")
|
|
// }
|
|
// log.Print("session id ", sess.FToken.ToHexString(), ", FUser ", sess.FUser, ", FData ", sess.FData)
|
|
// return
|
|
//}
|
|
//
|
|
//func (sess *SessionImpl) NewEncryptReader(r io.Reader) (io.Reader, error) {
|
|
// return sess.FBox.NewEncryptReader(r)
|
|
//}
|
|
//func (sess *SessionImpl) NewDecryptReader(r io.Reader) (io.Reader, error) {
|
|
// return sess.FBox.NewDecryptReader(r)
|
|
//}
|
|
//func (sess *SessionImpl) NewEncryptWriter(w io.Writer) (io.WriteCloser, error) {
|
|
// return sess.FBox.NewEncryptWriter(w)
|
|
//}
|
|
//func (sess *SessionImpl) NewDecryptWriter(w io.Writer) (io.WriteCloser, error) {
|
|
// return sess.FBox.NewDecryptWriter(w)
|
|
//}
|
|
//func (sess *SessionImpl) EncryptedSize(size uint64) (uint64, error) {
|
|
// return sess.FBox.EncryptedSize(size)
|
|
//}
|
|
//func (sess *SessionImpl) DecryptedSize(size uint64) (uint64, error) {
|
|
// return sess.FBox.DecryptedSize(size)
|
|
//}
|