go-pass-gen/api/handlers.go
2021-10-21 12:16:24 +02:00

43 lines
949 B
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)
}
password := passgen.NewPasswordGenerator(passgen.Options{Length: params.Length,
WithNumbers: params.WithNumbers}).NewPassword()
render.Status(r, http.StatusAccepted)
render.Render(w, r, &PasswordResponse{Password: password})
}
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
}