1
0
Fork 0
eighty/middleware/internal/session_dto.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)
//}