diff --git a/pkg/server/server.go b/pkg/server/server.go index 59bcb60ab..0e886eb04 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -2,26 +2,22 @@ package server import ( "log" - "net/http" "reflect" - "github.com/gorilla/mux" "github.com/minio-io/minio/pkg/httpserver" storageModule "github.com/minio-io/minio/pkg/storage" + "github.com/minio-io/minio/pkg/webapi/minioapi" ) -var storage *storageModule.Storage - func Start() { ctrlChans := make([]chan<- string, 0) statusChans := make([]<-chan error, 0) - ctrlChan, statusChan, storageSystem := storageModule.Start() + ctrlChan, statusChan, storage := storageModule.Start() ctrlChans = append(ctrlChans, ctrlChan) statusChans = append(statusChans, statusChan) - storage = storageSystem - ctrlChan, statusChan = httpserver.Start(getHttpHandler()) + ctrlChan, statusChan = httpserver.Start(minioapi.HttpHandler(storage)) ctrlChans = append(ctrlChans, ctrlChan) statusChans = append(statusChans, statusChan) @@ -57,24 +53,3 @@ func createSelectCases(channels []<-chan error) []reflect.SelectCase { } return cases } - -func getHttpHandler() http.Handler { - mux := mux.NewRouter() - mux.HandleFunc("/{bucket}/{object:.*}", getObjectHandler).Methods("GET") - mux.HandleFunc("/{bucket}/{object:.*}", putObjectHandler).Methods("PUT") - return mux -} - -func getObjectHandler(w http.ResponseWriter, req *http.Request) { - vars := mux.Vars(req) - bucket := vars["bucket"] - object := vars["object"] - storage.CopyObjectToWriter(w, bucket, object) -} - -func putObjectHandler(w http.ResponseWriter, req *http.Request) { - vars := mux.Vars(req) - bucket := vars["bucket"] - object := vars["object"] - storage.StoreObject(bucket, object, req.Body) -} diff --git a/pkg/webapi/minioapi/minioapi.go b/pkg/webapi/minioapi/minioapi.go new file mode 100644 index 000000000..a9aea8548 --- /dev/null +++ b/pkg/webapi/minioapi/minioapi.go @@ -0,0 +1,36 @@ +package minioapi + +import ( + "net/http" + + "github.com/gorilla/mux" + mstorage "github.com/minio-io/minio/pkg/storage" +) + +type minioApi struct { + storage *mstorage.Storage +} + +func HttpHandler(storage *mstorage.Storage) http.Handler { + mux := mux.NewRouter() + api := minioApi{ + storage: storage, + } + mux.HandleFunc("/{bucket}/{object:.*}", api.getObjectHandler).Methods("GET") + mux.HandleFunc("/{bucket}/{object:.*}", api.putObjectHandler).Methods("PUT") + return mux +} + +func (server *minioApi) getObjectHandler(w http.ResponseWriter, req *http.Request) { + vars := mux.Vars(req) + bucket := vars["bucket"] + object := vars["object"] + server.storage.CopyObjectToWriter(w, bucket, object) +} + +func (server *minioApi) putObjectHandler(w http.ResponseWriter, req *http.Request) { + vars := mux.Vars(req) + bucket := vars["bucket"] + object := vars["object"] + server.storage.StoreObject(bucket, object, req.Body) +}