Merge pull request #13 from fkautz/pr_out_populating_http_handler_with_test_scaffolding

master
Frederick F. Kautz IV 10 years ago
commit e1cd8d7412
  1. 15
      pkg/server/server.go
  2. 22
      pkg/storage/storage.go

@ -1,23 +1,25 @@
package server package server
import ( import (
"io"
"log" "log"
"net/http" "net/http"
"reflect" "reflect"
"github.com/gorilla/mux" "github.com/gorilla/mux"
"github.com/minio-io/minio/pkg/httpserver" "github.com/minio-io/minio/pkg/httpserver"
"github.com/minio-io/minio/pkg/storage" storageModule "github.com/minio-io/minio/pkg/storage"
) )
var storage *storageModule.Storage
func Start() { func Start() {
ctrlChans := make([]chan<- string, 0) ctrlChans := make([]chan<- string, 0)
statusChans := make([]<-chan error, 0) statusChans := make([]<-chan error, 0)
ctrlChan, statusChan := storage.Start() ctrlChan, statusChan, storageSystem := storageModule.Start()
ctrlChans = append(ctrlChans, ctrlChan) ctrlChans = append(ctrlChans, ctrlChan)
statusChans = append(statusChans, statusChan) statusChans = append(statusChans, statusChan)
storage = storageSystem
ctrlChan, statusChan = httpserver.Start(getHttpHandler()) ctrlChan, statusChan = httpserver.Start(getHttpHandler())
ctrlChans = append(ctrlChans, ctrlChan) ctrlChans = append(ctrlChans, ctrlChan)
@ -58,10 +60,13 @@ func createSelectCases(channels []<-chan error) []reflect.SelectCase {
func getHttpHandler() http.Handler { func getHttpHandler() http.Handler {
mux := mux.NewRouter() mux := mux.NewRouter()
mux.HandleFunc("/", storageHandler) mux.HandleFunc("/{bucket}/{object:.*}", storageHandler)
return mux return mux
} }
func storageHandler(w http.ResponseWriter, req *http.Request) { func storageHandler(w http.ResponseWriter, req *http.Request) {
io.WriteString(w, "MINIO") vars := mux.Vars(req)
bucket := vars["bucket"]
object := vars["object"]
storage.CopyObjectToWriter(w, bucket, object)
} }

@ -1,12 +1,28 @@
package storage package storage
import "errors" import (
"bytes"
"errors"
"io"
)
func Start() (chan<- string, <-chan error) { type Storage struct{}
func (storage *Storage) CopyObjectToWriter(w io.Writer, bucket string, object string) error {
// TODO synchronize access
// get object
objectData := "OBJECT: " + bucket + " - " + object
objectBuffer := bytes.NewBufferString(objectData)
// copy object to writer
_, err := io.Copy(w, objectBuffer)
return err
}
func Start() (chan<- string, <-chan error, *Storage) {
ctrlChannel := make(chan string) ctrlChannel := make(chan string)
errorChannel := make(chan error) errorChannel := make(chan error)
go start(ctrlChannel, errorChannel) go start(ctrlChannel, errorChannel)
return ctrlChannel, errorChannel return ctrlChannel, errorChannel, &Storage{}
} }
func start(ctrlChannel <-chan string, errorChannel chan<- error) { func start(ctrlChannel <-chan string, errorChannel chan<- error) {

Loading…
Cancel
Save