go-pass-gen/api/handlers.go
2022-01-21 16:50:21 -04:00

45 lines
1 KiB
Go

package api
import (
"log"
"net/http"
"github.com/go-chi/render"
"github.com/rjNemo/go-pass-gen/passgen"
)
func (s Server) HandleNewPassword(w http.ResponseWriter, r *http.Request) {
params := &PasswordParams{}
if err := render.Bind(r, params); err != nil {
log.Fatal(err)
}
opts := passgen.Options{Length: params.Length, WithNumbers: params.WithNumbers}
password := passgen.NewPasswordGenerator(opts.SetDefaults()).NewPassword()
render.Status(r, http.StatusAccepted)
err := render.Render(w, r, &PasswordResponse{Password: password})
if err != nil {
log.Fatalf("error: %q", err)
}
}
type PasswordParams struct {
Length int `json:"length"`
WithNumbers bool `json:"with_numbers"`
}
func (p PasswordParams) Bind(*http.Request) error {
return nil
}
type PasswordResponse struct {
Success bool `json:"success"`
Error *string `json:"error"`
Password string `json:"password"`
}
func (resp *PasswordResponse) Render(http.ResponseWriter, *http.Request) error {
resp.Success = true
return nil
}