package api import ( "encoding/json" "net/http" "reichard.io/imagini/internal/models" "github.com/99designs/gqlgen/graphql/handler" "github.com/99designs/gqlgen/graphql/playground" "reichard.io/imagini/graph" "reichard.io/imagini/graph/generated" ) func (api *API) registerRoutes() { srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}})) // TODO: Provide Authentication for srv api.Router.Handle("/playground", playground.Handler("GraphQL playground", "/query")) api.Router.Handle("/query", srv) api.Router.HandleFunc("/media/", multipleMiddleware( api.mediaHandler, api.authMiddleware, )) api.Router.HandleFunc("/logout", api.logoutHandler) api.Router.HandleFunc("/login", api.loginHandler) } func errorJSON(w http.ResponseWriter, err string, code int) { errStruct := &models.APIResponse{Error: &models.APIError{Message: err, Code: int64(code)}} responseJSON(w, errStruct, code) } func responseJSON(w http.ResponseWriter, msg interface{}, code int) { w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Header().Set("X-Content-Type-Options", "nosniff") w.WriteHeader(code) json.NewEncoder(w).Encode(msg) } func successJSON(w http.ResponseWriter, msg string, code int) { w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Header().Set("X-Content-Type-Options", "nosniff") w.WriteHeader(code) json.NewEncoder(w).Encode(map[string]interface{}{"success": msg}) }