boltstore/README.md

85 lines
1.7 KiB
Markdown
Raw Normal View History

2014-06-13 22:50:18 +04:00
# BoltStore
2014-06-13 13:46:18 +04:00
2014-06-15 11:08:21 +04:00
[![wercker status](https://app.wercker.com/status/752959ce0f923476671e49fb9b76ebe0/s "wercker status")](https://app.wercker.com/project/bykey/752959ce0f923476671e49fb9b76ebe0)
2014-06-13 22:45:15 +04:00
[![GoDoc](https://godoc.org/github.com/yosssi/boltstore?status.png)](https://godoc.org/github.com/yosssi/boltstore)
2014-06-13 22:49:20 +04:00
2014-06-13 22:50:18 +04:00
## About
BoltStore is a session store backend for [gorilla/sessions](https://github.com/gorilla/sessions) using [Bolt](https://github.com/boltdb/bolt).
2014-06-13 22:49:20 +04:00
## Installation
```go
2014-06-13 22:50:42 +04:00
go get github.com/yosssi/boltstore/...
2014-06-13 22:49:20 +04:00
```
## Example
```go
2014-06-14 20:53:34 +04:00
package main
import (
"fmt"
"net/http"
"github.com/boltdb/bolt"
"github.com/gorilla/sessions"
"github.com/yosssi/boltstore/reaper"
"github.com/yosssi/boltstore/store"
2014-06-13 22:49:20 +04:00
)
2014-06-14 20:53:34 +04:00
var db *bolt.DB
func handler(w http.ResponseWriter, r *http.Request) {
if r.URL.Path[1:] == "favicon.ico" {
return
}
// Fetch a new store.
str, err := store.New(
db,
store.Config{
SessionOptions: sessions.Options{
MaxAge: 60 * 60 * 24 * 30, // 30days
},
},
[]byte("secret-key"),
)
// Get a session.
session, err := str.Get(r, "session-key")
if err != nil {
panic(err)
}
// Add a value.
session.Values["foo"] = "bar"
2014-06-14 20:59:02 +04:00
// Save the session.
2014-06-14 20:53:34 +04:00
if err := sessions.Save(r, w); err != nil {
panic(err)
}
2014-06-13 22:49:20 +04:00
2014-06-14 20:53:34 +04:00
// Delete the session.
session.Options.MaxAge = -1
if err := sessions.Save(r, w); err != nil {
panic(err)
}
2014-06-13 22:49:20 +04:00
2014-06-14 20:53:34 +04:00
fmt.Fprintf(w, "Hello BoltStore")
2014-06-13 22:49:20 +04:00
}
2014-06-14 20:53:34 +04:00
func main() {
2014-06-14 20:59:02 +04:00
// Open a Bolt database.
2014-06-14 20:57:13 +04:00
db, _ = bolt.Open("./sessions.db", 0666)
2014-06-14 20:53:34 +04:00
defer db.Close()
// Invoke a reaper which removes expired sessions.
defer reaper.Quit(reaper.Run(db, reaper.Options{}))
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
2014-06-13 22:49:20 +04:00
}
```
## Documentation
* [GoDoc](http://godoc.org/github.com/yosssi/boltstore)