package apiv1

import (
	"net/http"

	"code.secondbit.org/api.hg"
	"code.secondbit.org/trout.hg"
	"golang.org/x/net/context"
)

// GetRouter returns a trout Router that is configured to handle
// all the routes necessary to serve a devices API server.
func GetRouter(ctx context.Context) http.Handler {
	var router trout.Router
	router.Endpoint("/").Methods("POST").Handler(api.ContextWrapper(ctx, api.ContextHandler(handleCreateDevices)))
	router.Endpoint("/").Methods("GET").Handler(api.ContextWrapper(ctx, api.ContextHandler(handleGetDevices)))
	router.Endpoint("/{id}").Methods("GET").Handler(api.ContextWrapper(ctx, api.ContextHandler(handleGetDevices)))
	router.Endpoint("/{id}").Methods("PATCH").Handler(api.ContextWrapper(ctx, api.ContextHandler(handleUpdateDevice)))
	// TODO(paddy): add the delete handler
	router.Endpoint("/").Methods("DELETE").Handler(api.ContextWrapper(ctx, api.ContextHandler(nil)))
	router.Endpoint("/{id}").Methods("DELETE").Handler(api.ContextWrapper(ctx, api.ContextHandler(nil)))

	return router
}
