diff --git a/__debug_bin b/__debug_bin new file mode 100755 index 00000000000..28304fc0889 Binary files /dev/null and b/__debug_bin differ diff --git a/cmd/root.go b/cmd/root.go index c5cca8d35fe..cbab2f82144 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/pflag" "github.com/elastic/apm-server/beater" + "github.com/elastic/apm-server/custom_server" "github.com/elastic/apm-server/idxmgmt" - _ "github.com/elastic/apm-server/include" "github.com/elastic/beats/libbeat/cmd" "github.com/elastic/beats/libbeat/cmd/instance" "github.com/elastic/beats/libbeat/common" @@ -44,6 +44,21 @@ const IdxPattern = "apm" var RootCmd *cmd.BeatsRootCmd func init() { + + // r := mux.NewRouter() + + // r.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) { + // // vars := mux.Vars(r) + // // title := vars["title"] + // // page := vars["page"] + + // fmt.Fprintf(w, "You've requested the book: on page \n") + // }).Methods("GET") + + // go http.ListenAndServe(":9000", r) + + s := custom_server.NewServer() + s.Start() overrides := common.MustNewConfigFrom(map[string]interface{}{ "logging": map[string]interface{}{ "metrics": map[string]interface{}{ diff --git a/custom_server/custom_router.go b/custom_server/custom_router.go new file mode 100644 index 00000000000..9f0663bc6e5 --- /dev/null +++ b/custom_server/custom_router.go @@ -0,0 +1,57 @@ +package custom_server + +import ( + "net/http" + + "github.com/gorilla/mux" +) + +type CustomRouter struct { +} + +func NewUserRouter(router *mux.Router) *mux.Router { + customRouter := CustomRouter{} + + router.HandleFunc("/", customRouter.createUserHandler).Methods("GET") + // router.HandleFunc("/{username}", userRouter.getUserHandler).Methods("GET") + return router +} + +func (ur *CustomRouter) createUserHandler(w http.ResponseWriter, r *http.Request) { + // user, err := decodeUser(r) + // if err != nil { + // Error(w, http.StatusBadRequest, "Invalid request payload") + // return + // } + + // err = ur.userService.Create(&user) + // if err != nil { + // Error(w, http.StatusInternalServerError, err.Error()) + // return + // } + Json(w, http.StatusOK, "") +} + +// func (ur *userRouter) getUserHandler(w http.ResponseWriter, r *http.Request) { +// vars := mux.Vars(r) +// log.Println(vars) +// username := vars["username"] + +// user, err := ur.userService.GetByUsername(username) +// if err != nil { +// Error(w, http.StatusNotFound, err.Error()) +// return +// } + +// Json(w, http.StatusOK, user) +// } + +// func decodeUser(ur *http.Request) (root.User, error) { +// var u root.User +// if r.Body == nil { +// return u, errors.New("no request body") +// } +// decoder := json.NewDecoder(r.Body) +// err := decoder.Decode(&u) +// return u, err +// } diff --git a/custom_server/custom_server.go b/custom_server/custom_server.go new file mode 100644 index 00000000000..b1dd36f269d --- /dev/null +++ b/custom_server/custom_server.go @@ -0,0 +1,31 @@ +package custom_server + +import ( + "log" + "net/http" + "os" + + "github.com/gorilla/handlers" + "github.com/gorilla/mux" +) + +type CustomServer struct { + router *mux.Router +} + +func NewServer() *CustomServer { + s := CustomServer{router: mux.NewRouter()} + NewUserRouter(s.newSubrouter("/custom_end_point")) + return &s +} + +func (s *CustomServer) Start() { + log.Println("Listening on port 8080") + if err := http.ListenAndServe(":8080", handlers.LoggingHandler(os.Stdout, s.router)); err != nil { + log.Fatal("http.ListenAndServe: ", err) + } +} + +func (s *CustomServer) newSubrouter(path string) *mux.Router { + return s.router.PathPrefix(path).Subrouter() +} diff --git a/custom_server/response.go b/custom_server/response.go new file mode 100644 index 00000000000..7f361320ace --- /dev/null +++ b/custom_server/response.go @@ -0,0 +1,18 @@ +package custom_server + +import ( + "encoding/json" + "net/http" +) + +func Error(w http.ResponseWriter, code int, message string) { + Json(w, code, map[string]string{"error": message}) +} + +func Json(w http.ResponseWriter, code int, payload interface{}) { + response, _ := json.Marshal(payload) + + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(code) + w.Write(response) +} diff --git a/main.go b/main.go index adfb1d3013a..e380fb49b39 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,7 @@ import ( "os" "github.com/elastic/apm-server/cmd" + ) func main() {