Files
micromdm/enroll/transport.go
Mosen 82f657ef6a Fix error with plist encoding by dereferencing nested payloads.
Add correct header for enrollment profile.
Enrollment works with micromdm/scep server!
2016-07-11 14:54:46 -04:00

48 lines
1.0 KiB
Go

package enroll
import (
"net/http"
"golang.org/x/net/context"
kitlog "github.com/go-kit/kit/log"
kithttp "github.com/go-kit/kit/transport/http"
"github.com/gorilla/mux"
"github.com/groob/plist"
)
// ServiceHandler returns an HTTP Handler for the enroll service
func ServiceHandler(ctx context.Context, svc Service, logger kitlog.Logger) http.Handler {
opts := []kithttp.ServerOption{
kithttp.ServerErrorLogger(logger),
}
connectHandler := kithttp.NewServer(
ctx,
makeEnrollEndpoint(svc),
decodeMDMEnrollRequest,
encodeResponse,
opts...,
)
r := mux.NewRouter()
r.Handle("/mdm/enroll", connectHandler).Methods("GET")
return r
}
func decodeMDMEnrollRequest(_ context.Context, r *http.Request) (interface{}, error) {
return r, nil
}
func encodeResponse(ctx context.Context, w http.ResponseWriter, response interface{}) error {
resp := response.(mdmEnrollResponse)
w.Header().Set("Content-Type", "application/x-apple-aspen-config")
if err := plist.NewEncoder(w).Encode(resp); err != nil {
return err
}
return nil
}