Commit f4d62d31 authored by slene's avatar slene

beego: fix dependency of cache / session sub package

parent acbdeb62
...@@ -5,6 +5,8 @@ import ( ...@@ -5,6 +5,8 @@ import (
"errors" "errors"
"github.com/beego/memcache" "github.com/beego/memcache"
"github.com/astaxie/beego/cache"
) )
// Memcache adapter. // Memcache adapter.
...@@ -147,5 +149,5 @@ func (rc *MemcacheCache) connectInit() (*memcache.Connection, error) { ...@@ -147,5 +149,5 @@ func (rc *MemcacheCache) connectInit() (*memcache.Connection, error) {
} }
func init() { func init() {
Register("memcache", NewMemCache()) cache.Register("memcache", NewMemCache())
} }
...@@ -6,6 +6,8 @@ import ( ...@@ -6,6 +6,8 @@ import (
"time" "time"
"github.com/beego/redigo/redis" "github.com/beego/redigo/redis"
"github.com/astaxie/beego/cache"
) )
var ( var (
...@@ -130,5 +132,5 @@ func (rc *RedisCache) connectInit() { ...@@ -130,5 +132,5 @@ func (rc *RedisCache) connectInit() {
} }
func init() { func init() {
Register("redis", NewRedisCache()) cache.Register("redis", NewRedisCache())
} }
package session package session
import ( import (
"github.com/couchbaselabs/go-couchbase"
"net/http" "net/http"
"strings" "strings"
"sync" "sync"
"github.com/couchbaselabs/go-couchbase"
"github.com/astaxie/beego/session"
) )
var couchbpder = &CouchbaseProvider{} var couchbpder = &CouchbaseProvider{}
...@@ -70,7 +73,7 @@ func (cs *CouchbaseSessionStore) SessionRelease(w http.ResponseWriter) { ...@@ -70,7 +73,7 @@ func (cs *CouchbaseSessionStore) SessionRelease(w http.ResponseWriter) {
return return
} }
bo, err := encodeGob(cs.values) bo, err := session.EncodeGob(cs.values)
if err != nil { if err != nil {
return return
} }
...@@ -117,7 +120,7 @@ func (cp *CouchbaseProvider) SessionInit(maxlifetime int64, savePath string) err ...@@ -117,7 +120,7 @@ func (cp *CouchbaseProvider) SessionInit(maxlifetime int64, savePath string) err
} }
// read couchbase session by sid // read couchbase session by sid
func (cp *CouchbaseProvider) SessionRead(sid string) (SessionStore, error) { func (cp *CouchbaseProvider) SessionRead(sid string) (session.SessionStore, error) {
cp.b = cp.getBucket() cp.b = cp.getBucket()
var doc []byte var doc []byte
...@@ -127,7 +130,7 @@ func (cp *CouchbaseProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -127,7 +130,7 @@ func (cp *CouchbaseProvider) SessionRead(sid string) (SessionStore, error) {
if doc == nil { if doc == nil {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(doc) kv, err = session.DecodeGob(doc)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -150,7 +153,7 @@ func (cp *CouchbaseProvider) SessionExist(sid string) bool { ...@@ -150,7 +153,7 @@ func (cp *CouchbaseProvider) SessionExist(sid string) bool {
} }
} }
func (cp *CouchbaseProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) { func (cp *CouchbaseProvider) SessionRegenerate(oldsid, sid string) (session.SessionStore, error) {
cp.b = cp.getBucket() cp.b = cp.getBucket()
var doc []byte var doc []byte
...@@ -172,7 +175,7 @@ func (cp *CouchbaseProvider) SessionRegenerate(oldsid, sid string) (SessionStore ...@@ -172,7 +175,7 @@ func (cp *CouchbaseProvider) SessionRegenerate(oldsid, sid string) (SessionStore
if doc == nil { if doc == nil {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(doc) kv, err = session.DecodeGob(doc)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -199,5 +202,5 @@ func (cp *CouchbaseProvider) SessionAll() int { ...@@ -199,5 +202,5 @@ func (cp *CouchbaseProvider) SessionAll() int {
} }
func init() { func init() {
Register("couchbase", couchbpder) session.Register("couchbase", couchbpder)
} }
...@@ -14,6 +14,8 @@ import ( ...@@ -14,6 +14,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/astaxie/beego/session"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
) )
...@@ -73,7 +75,7 @@ func (st *MysqlSessionStore) SessionID() string { ...@@ -73,7 +75,7 @@ func (st *MysqlSessionStore) SessionID() string {
// must call this method to save values to database. // must call this method to save values to database.
func (st *MysqlSessionStore) SessionRelease(w http.ResponseWriter) { func (st *MysqlSessionStore) SessionRelease(w http.ResponseWriter) {
defer st.c.Close() defer st.c.Close()
b, err := encodeGob(st.values) b, err := session.EncodeGob(st.values)
if err != nil { if err != nil {
return return
} }
...@@ -106,7 +108,7 @@ func (mp *MysqlProvider) SessionInit(maxlifetime int64, savePath string) error { ...@@ -106,7 +108,7 @@ func (mp *MysqlProvider) SessionInit(maxlifetime int64, savePath string) error {
} }
// get mysql session by sid // get mysql session by sid
func (mp *MysqlProvider) SessionRead(sid string) (SessionStore, error) { func (mp *MysqlProvider) SessionRead(sid string) (session.SessionStore, error) {
c := mp.connectInit() c := mp.connectInit()
row := c.QueryRow("select session_data from session where session_key=?", sid) row := c.QueryRow("select session_data from session where session_key=?", sid)
var sessiondata []byte var sessiondata []byte
...@@ -119,7 +121,7 @@ func (mp *MysqlProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -119,7 +121,7 @@ func (mp *MysqlProvider) SessionRead(sid string) (SessionStore, error) {
if len(sessiondata) == 0 { if len(sessiondata) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(sessiondata) kv, err = session.DecodeGob(sessiondata)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -143,7 +145,7 @@ func (mp *MysqlProvider) SessionExist(sid string) bool { ...@@ -143,7 +145,7 @@ func (mp *MysqlProvider) SessionExist(sid string) bool {
} }
// generate new sid for mysql session // generate new sid for mysql session
func (mp *MysqlProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) { func (mp *MysqlProvider) SessionRegenerate(oldsid, sid string) (session.SessionStore, error) {
c := mp.connectInit() c := mp.connectInit()
row := c.QueryRow("select session_data from session where session_key=?", oldsid) row := c.QueryRow("select session_data from session where session_key=?", oldsid)
var sessiondata []byte var sessiondata []byte
...@@ -156,7 +158,7 @@ func (mp *MysqlProvider) SessionRegenerate(oldsid, sid string) (SessionStore, er ...@@ -156,7 +158,7 @@ func (mp *MysqlProvider) SessionRegenerate(oldsid, sid string) (SessionStore, er
if len(sessiondata) == 0 { if len(sessiondata) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(sessiondata) kv, err = session.DecodeGob(sessiondata)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -194,5 +196,5 @@ func (mp *MysqlProvider) SessionAll() int { ...@@ -194,5 +196,5 @@ func (mp *MysqlProvider) SessionAll() int {
} }
func init() { func init() {
Register("mysql", mysqlpder) session.Register("mysql", mysqlpder)
} }
...@@ -34,6 +34,9 @@ import ( ...@@ -34,6 +34,9 @@ import (
"net/http" "net/http"
"sync" "sync"
"time" "time"
"github.com/astaxie/beego/session"
_ "github.com/lib/pq" _ "github.com/lib/pq"
) )
...@@ -93,7 +96,7 @@ func (st *PostgresqlSessionStore) SessionID() string { ...@@ -93,7 +96,7 @@ func (st *PostgresqlSessionStore) SessionID() string {
// must call this method to save values to database. // must call this method to save values to database.
func (st *PostgresqlSessionStore) SessionRelease(w http.ResponseWriter) { func (st *PostgresqlSessionStore) SessionRelease(w http.ResponseWriter) {
defer st.c.Close() defer st.c.Close()
b, err := encodeGob(st.values) b, err := session.EncodeGob(st.values)
if err != nil { if err != nil {
return return
} }
...@@ -126,7 +129,7 @@ func (mp *PostgresqlProvider) SessionInit(maxlifetime int64, savePath string) er ...@@ -126,7 +129,7 @@ func (mp *PostgresqlProvider) SessionInit(maxlifetime int64, savePath string) er
} }
// get postgresql session by sid // get postgresql session by sid
func (mp *PostgresqlProvider) SessionRead(sid string) (SessionStore, error) { func (mp *PostgresqlProvider) SessionRead(sid string) (session.SessionStore, error) {
c := mp.connectInit() c := mp.connectInit()
row := c.QueryRow("select session_data from session where session_key=$1", sid) row := c.QueryRow("select session_data from session where session_key=$1", sid)
var sessiondata []byte var sessiondata []byte
...@@ -138,7 +141,7 @@ func (mp *PostgresqlProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -138,7 +141,7 @@ func (mp *PostgresqlProvider) SessionRead(sid string) (SessionStore, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
} else if err != nil { } else if err != nil {
return nil, err return nil, err
} }
...@@ -146,7 +149,7 @@ func (mp *PostgresqlProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -146,7 +149,7 @@ func (mp *PostgresqlProvider) SessionRead(sid string) (SessionStore, error) {
if len(sessiondata) == 0 { if len(sessiondata) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(sessiondata) kv, err = session.DecodeGob(sessiondata)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -162,7 +165,7 @@ func (mp *PostgresqlProvider) SessionExist(sid string) bool { ...@@ -162,7 +165,7 @@ func (mp *PostgresqlProvider) SessionExist(sid string) bool {
row := c.QueryRow("select session_data from session where session_key=$1", sid) row := c.QueryRow("select session_data from session where session_key=$1", sid)
var sessiondata []byte var sessiondata []byte
err := row.Scan(&sessiondata) err := row.Scan(&sessiondata)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
return false return false
} else { } else {
...@@ -171,21 +174,21 @@ func (mp *PostgresqlProvider) SessionExist(sid string) bool { ...@@ -171,21 +174,21 @@ func (mp *PostgresqlProvider) SessionExist(sid string) bool {
} }
// generate new sid for postgresql session // generate new sid for postgresql session
func (mp *PostgresqlProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) { func (mp *PostgresqlProvider) SessionRegenerate(oldsid, sid string) (session.SessionStore, error) {
c := mp.connectInit() c := mp.connectInit()
row := c.QueryRow("select session_data from session where session_key=$1", oldsid) row := c.QueryRow("select session_data from session where session_key=$1", oldsid)
var sessiondata []byte var sessiondata []byte
err := row.Scan(&sessiondata) err := row.Scan(&sessiondata)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
c.Exec("insert into session(session_key,session_data,session_expiry) values($1,$2,$3)", c.Exec("insert into session(session_key,session_data,session_expiry) values($1,$2,$3)",
oldsid, "", time.Now().Format(time.RFC3339)) oldsid, "", time.Now().Format(time.RFC3339))
} }
c.Exec("update session set session_key=$1 where session_key=$2", sid, oldsid) c.Exec("update session set session_key=$1 where session_key=$2", sid, oldsid)
var kv map[interface{}]interface{} var kv map[interface{}]interface{}
if len(sessiondata) == 0 { if len(sessiondata) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(sessiondata) kv, err = session.DecodeGob(sessiondata)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -223,5 +226,5 @@ func (mp *PostgresqlProvider) SessionAll() int { ...@@ -223,5 +226,5 @@ func (mp *PostgresqlProvider) SessionAll() int {
} }
func init() { func init() {
Register("postgresql", postgresqlpder) session.Register("postgresql", postgresqlpder)
} }
...@@ -6,6 +6,8 @@ import ( ...@@ -6,6 +6,8 @@ import (
"strings" "strings"
"sync" "sync"
"github.com/astaxie/beego/session"
"github.com/beego/redigo/redis" "github.com/beego/redigo/redis"
) )
...@@ -77,7 +79,7 @@ func (rs *RedisSessionStore) SessionRelease(w http.ResponseWriter) { ...@@ -77,7 +79,7 @@ func (rs *RedisSessionStore) SessionRelease(w http.ResponseWriter) {
return return
} }
b, err := encodeGob(rs.values) b, err := session.EncodeGob(rs.values)
if err != nil { if err != nil {
return return
} }
...@@ -134,7 +136,7 @@ func (rp *RedisProvider) SessionInit(maxlifetime int64, savePath string) error { ...@@ -134,7 +136,7 @@ func (rp *RedisProvider) SessionInit(maxlifetime int64, savePath string) error {
} }
// read redis session by sid // read redis session by sid
func (rp *RedisProvider) SessionRead(sid string) (SessionStore, error) { func (rp *RedisProvider) SessionRead(sid string) (session.SessionStore, error) {
c := rp.poollist.Get() c := rp.poollist.Get()
defer c.Close() defer c.Close()
...@@ -143,7 +145,7 @@ func (rp *RedisProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -143,7 +145,7 @@ func (rp *RedisProvider) SessionRead(sid string) (SessionStore, error) {
if len(kvs) == 0 { if len(kvs) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob([]byte(kvs)) kv, err = session.DecodeGob([]byte(kvs))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -166,7 +168,7 @@ func (rp *RedisProvider) SessionExist(sid string) bool { ...@@ -166,7 +168,7 @@ func (rp *RedisProvider) SessionExist(sid string) bool {
} }
// generate new sid for redis session // generate new sid for redis session
func (rp *RedisProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) { func (rp *RedisProvider) SessionRegenerate(oldsid, sid string) (session.SessionStore, error) {
c := rp.poollist.Get() c := rp.poollist.Get()
defer c.Close() defer c.Close()
...@@ -185,7 +187,7 @@ func (rp *RedisProvider) SessionRegenerate(oldsid, sid string) (SessionStore, er ...@@ -185,7 +187,7 @@ func (rp *RedisProvider) SessionRegenerate(oldsid, sid string) (SessionStore, er
if len(kvs) == 0 { if len(kvs) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob([]byte(kvs)) kv, err = session.DecodeGob([]byte(kvs))
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -215,5 +217,5 @@ func (rp *RedisProvider) SessionAll() int { ...@@ -215,5 +217,5 @@ func (rp *RedisProvider) SessionAll() int {
} }
func init() { func init() {
Register("redis", redispder) session.Register("redis", redispder)
} }
...@@ -70,7 +70,7 @@ func (fs *FileSessionStore) SessionID() string { ...@@ -70,7 +70,7 @@ func (fs *FileSessionStore) SessionID() string {
// Write file session to local file with Gob string // Write file session to local file with Gob string
func (fs *FileSessionStore) SessionRelease(w http.ResponseWriter) { func (fs *FileSessionStore) SessionRelease(w http.ResponseWriter) {
defer fs.f.Close() defer fs.f.Close()
b, err := encodeGob(fs.values) b, err := EncodeGob(fs.values)
if err != nil { if err != nil {
return return
} }
...@@ -123,7 +123,7 @@ func (fp *FileProvider) SessionRead(sid string) (SessionStore, error) { ...@@ -123,7 +123,7 @@ func (fp *FileProvider) SessionRead(sid string) (SessionStore, error) {
if len(b) == 0 { if len(b) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(b) kv, err = DecodeGob(b)
if err != nil { if err != nil {
return nil, err return nil, err
} }
...@@ -222,7 +222,7 @@ func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (SessionStore, err ...@@ -222,7 +222,7 @@ func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (SessionStore, err
if len(b) == 0 { if len(b) == 0 {
kv = make(map[interface{}]interface{}) kv = make(map[interface{}]interface{})
} else { } else {
kv, err = decodeGob(b) kv, err = DecodeGob(b)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -27,7 +27,7 @@ func init() { ...@@ -27,7 +27,7 @@ func init() {
gob.Register(map[int]int64{}) gob.Register(map[int]int64{})
} }
func encodeGob(obj map[interface{}]interface{}) ([]byte, error) { func EncodeGob(obj map[interface{}]interface{}) ([]byte, error) {
buf := bytes.NewBuffer(nil) buf := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buf) enc := gob.NewEncoder(buf)
err := enc.Encode(obj) err := enc.Encode(obj)
...@@ -37,7 +37,7 @@ func encodeGob(obj map[interface{}]interface{}) ([]byte, error) { ...@@ -37,7 +37,7 @@ func encodeGob(obj map[interface{}]interface{}) ([]byte, error) {
return buf.Bytes(), nil return buf.Bytes(), nil
} }
func decodeGob(encoded []byte) (map[interface{}]interface{}, error) { func DecodeGob(encoded []byte) (map[interface{}]interface{}, error) {
buf := bytes.NewBuffer(encoded) buf := bytes.NewBuffer(encoded)
dec := gob.NewDecoder(buf) dec := gob.NewDecoder(buf)
var out map[interface{}]interface{} var out map[interface{}]interface{}
...@@ -97,8 +97,8 @@ func decrypt(block cipher.Block, value []byte) ([]byte, error) { ...@@ -97,8 +97,8 @@ func decrypt(block cipher.Block, value []byte) ([]byte, error) {
func encodeCookie(block cipher.Block, hashKey, name string, value map[interface{}]interface{}) (string, error) { func encodeCookie(block cipher.Block, hashKey, name string, value map[interface{}]interface{}) (string, error) {
var err error var err error
var b []byte var b []byte
// 1. encodeGob. // 1. EncodeGob.
if b, err = encodeGob(value); err != nil { if b, err = EncodeGob(value); err != nil {
return "", err return "", err
} }
// 2. Encrypt (optional). // 2. Encrypt (optional).
...@@ -158,8 +158,8 @@ func decodeCookie(block cipher.Block, hashKey, name, value string, gcmaxlifetime ...@@ -158,8 +158,8 @@ func decodeCookie(block cipher.Block, hashKey, name, value string, gcmaxlifetime
if b, err = decrypt(block, b); err != nil { if b, err = decrypt(block, b); err != nil {
return nil, err return nil, err
} }
// 5. decodeGob. // 5. DecodeGob.
if dst, err := decodeGob(b); err != nil { if dst, err := DecodeGob(b); err != nil {
return nil, err return nil, err
} else { } else {
return dst, nil return dst, nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment