Refactor and rename storage to Json
This commit is contained in:
@@ -3,7 +3,6 @@ package router
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/eslider/superherohub/pkg/deesee"
|
||||
"github.com/eslider/superherohub/pkg/deesee/storage"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
@@ -13,10 +12,18 @@ import (
|
||||
|
||||
// Router is a custom router that encapsulates the mux.Router
|
||||
type Router struct {
|
||||
store *storage.DeeSee // The store where superheroes are stored
|
||||
router *mux.Router // Encapsulated mux router
|
||||
logger *log.Logger // The logger to use for this router
|
||||
key int // The key to use for DeeSee encryption
|
||||
store Storage // The store where superheroes are stored
|
||||
router *mux.Router // Encapsulated mux router
|
||||
logger *log.Logger // The logger to use for this router
|
||||
key int // The key to use for DeeSee encryption
|
||||
}
|
||||
|
||||
type Storage interface {
|
||||
// List of superheroes
|
||||
List() []*deesee.Superhero
|
||||
|
||||
// Put stores a superhero in the store.
|
||||
Put(*deesee.Superhero) error
|
||||
}
|
||||
|
||||
// New creates a new encapsulated router.
|
||||
@@ -30,14 +37,14 @@ type Router struct {
|
||||
// require different resources and development progresses.
|
||||
//
|
||||
// And handlers shouldn't have prefix like "handle", course they are methods of the Router
|
||||
func New(heros *storage.DeeSee, key int, logger *log.Logger) *Router {
|
||||
func New(store Storage, key int, logger *log.Logger) *Router {
|
||||
// Set the logger
|
||||
if logger == nil {
|
||||
logger = log.Default()
|
||||
}
|
||||
|
||||
r := &Router{
|
||||
store: heros,
|
||||
store: store,
|
||||
key: key,
|
||||
logger: logger,
|
||||
router: mux.NewRouter(),
|
||||
@@ -90,7 +97,7 @@ func (r *Router) GetHandler() http.Handler {
|
||||
func (r *Router) GetSuperHeroes(w http.ResponseWriter, req *http.Request) {
|
||||
var (
|
||||
// Resulting
|
||||
heroes = *r.store
|
||||
heroes = r.store.List()
|
||||
// Get query parameter values
|
||||
params = req.URL.Query()
|
||||
err error
|
||||
@@ -134,8 +141,8 @@ func (r *Router) StoreSuperHero(w http.ResponseWriter, req *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Store superhero
|
||||
if err = r.store.Store(hero); err != nil {
|
||||
// Put superhero
|
||||
if err = r.store.Put(hero); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusConflict)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ func TestWebserviceGetSuperHeros(t *testing.T) {
|
||||
}
|
||||
|
||||
// Load heros
|
||||
heros, err := storage.New(path + "/data/heros.json")
|
||||
heros, err := storage.NewJson(path + "/data/heros.json")
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Error loading heros: %heros", err)
|
||||
@@ -128,7 +128,7 @@ func TestWebserviceStoreSuperhero(t *testing.T) {
|
||||
}
|
||||
|
||||
// Load heros
|
||||
heros, err := storage.New(path + "/data/heros.json")
|
||||
heros, err := storage.NewJson(path + "/data/heros.json")
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Error loading heros: %heros", err)
|
||||
|
||||
Reference in New Issue
Block a user