feat!(backend): move /auth/export to /users/@me/export
This commit is contained in:
parent
17f6ac4d23
commit
f087e9a29f
5 changed files with 14 additions and 9 deletions
|
@ -1,74 +0,0 @@
|
|||
package auth
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"codeberg.org/u1f320/pronouns.cc/backend/db"
|
||||
"codeberg.org/u1f320/pronouns.cc/backend/log"
|
||||
"codeberg.org/u1f320/pronouns.cc/backend/server"
|
||||
"github.com/go-chi/render"
|
||||
)
|
||||
|
||||
func (s *Server) startExport(w http.ResponseWriter, r *http.Request) error {
|
||||
ctx := r.Context()
|
||||
claims, _ := server.ClaimsFromContext(ctx)
|
||||
|
||||
hasExport, err := s.DB.HasRecentExport(ctx, claims.UserID)
|
||||
if err != nil {
|
||||
log.Errorf("checking if user has recent export: %v", err)
|
||||
return server.APIError{Code: server.ErrInternalServerError}
|
||||
}
|
||||
if hasExport {
|
||||
return server.APIError{Code: server.ErrRecentExport}
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, "GET", s.ExporterPath+"/start/"+claims.UserID.String(), nil)
|
||||
if err != nil {
|
||||
log.Errorf("creating start export request: %v", err)
|
||||
return server.APIError{Code: server.ErrInternalServerError}
|
||||
}
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
log.Errorf("executing start export request: %v", err)
|
||||
return server.APIError{Code: server.ErrInternalServerError}
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusAccepted {
|
||||
log.Errorf("got non-%v code: %v", http.StatusAccepted, resp.StatusCode)
|
||||
return server.APIError{
|
||||
Code: server.ErrInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
render.JSON(w, r, map[string]any{"started": true})
|
||||
return nil
|
||||
}
|
||||
|
||||
type dataExportResponse struct {
|
||||
Path string `json:"path"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
func (s *Server) getExport(w http.ResponseWriter, r *http.Request) error {
|
||||
ctx := r.Context()
|
||||
claims, _ := server.ClaimsFromContext(ctx)
|
||||
|
||||
de, err := s.DB.UserExport(ctx, claims.UserID)
|
||||
if err != nil {
|
||||
if err == db.ErrNoExport {
|
||||
return server.APIError{Code: server.ErrNotFound}
|
||||
}
|
||||
|
||||
log.Errorf("getting export for user %v: %v", claims.UserID, err)
|
||||
return err
|
||||
}
|
||||
|
||||
render.JSON(w, r, dataExportResponse{
|
||||
Path: de.Path(),
|
||||
CreatedAt: de.CreatedAt,
|
||||
})
|
||||
return nil
|
||||
}
|
|
@ -18,7 +18,6 @@ type Server struct {
|
|||
|
||||
RequireInvite bool
|
||||
BaseURL string
|
||||
ExporterPath string
|
||||
}
|
||||
|
||||
type userResponse struct {
|
||||
|
@ -57,7 +56,6 @@ func Mount(srv *server.Server, r chi.Router) {
|
|||
Server: srv,
|
||||
RequireInvite: os.Getenv("REQUIRE_INVITE") == "true",
|
||||
BaseURL: os.Getenv("BASE_URL"),
|
||||
ExporterPath: "http://127.0.0.1:" + os.Getenv("EXPORTER_PORT"),
|
||||
}
|
||||
|
||||
r.Route("/auth", func(r chi.Router) {
|
||||
|
@ -92,9 +90,6 @@ func Mount(srv *server.Server, r chi.Router) {
|
|||
r.With(server.MustAuth).Post("/tokens", server.WrapHandler(s.createToken))
|
||||
r.With(server.MustAuth).Delete("/tokens/{id}", server.WrapHandler(s.deleteToken))
|
||||
|
||||
r.With(server.MustAuth).Get("/export/start", server.WrapHandler(s.startExport))
|
||||
r.With(server.MustAuth).Get("/export", server.WrapHandler(s.getExport))
|
||||
|
||||
// cancel user delete
|
||||
// uses a special token, so handled in the function itself
|
||||
r.Get("/cancel-delete", server.WrapHandler(s.cancelDelete))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue