forked from jriou/coller
feat: Support Bearer token for clients
Fixes #13. Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
parent
d3b28143ea
commit
b45c3e3253
4 changed files with 83 additions and 50 deletions
|
@ -28,9 +28,11 @@ func handleMain() int {
|
|||
quiet := flag.Bool("quiet", false, "Log errors only")
|
||||
verbose := flag.Bool("verbose", false, "Print more logs")
|
||||
debug := flag.Bool("debug", false, "Print even more logs")
|
||||
password := flag.String("password", os.Getenv("COPIER_PASSWORD"), "Password to decrypt the note")
|
||||
password := flag.String("password", os.Getenv("COLLER_PASSWORD"), "Password to decrypt the note")
|
||||
askPassword := flag.Bool("w", false, "Read password from input")
|
||||
fileName := flag.String("file", "", "Write content of the note to a file")
|
||||
bearer := flag.String("bearer", os.Getenv("COLLER_BEARER"), "Bearer token")
|
||||
askBearer := flag.Bool("b", false, "Read bearer token from input")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
|
@ -62,24 +64,41 @@ func handleMain() int {
|
|||
fmt.Print("Password: ")
|
||||
p, err := term.ReadPassword(int(syscall.Stdin))
|
||||
if err != nil {
|
||||
logger.Error("could not read password", slog.Any("error", err))
|
||||
return internal.RC_ERROR
|
||||
return internal.ReturnError(logger, "could not read password", err)
|
||||
}
|
||||
*password = string(p)
|
||||
fmt.Print("\n")
|
||||
}
|
||||
|
||||
if *askBearer {
|
||||
fmt.Print("Bearer: ")
|
||||
b, err := term.ReadPassword(int(syscall.Stdin))
|
||||
if err != nil {
|
||||
return internal.ReturnError(logger, "could not read bearer token", err)
|
||||
}
|
||||
*bearer = string(b)
|
||||
fmt.Print("\n")
|
||||
}
|
||||
|
||||
logger.Debug("creating http request")
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return internal.ReturnError(logger, "could not create request", err)
|
||||
}
|
||||
if *bearer != "" {
|
||||
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", *bearer))
|
||||
}
|
||||
|
||||
logger.Debug("parsing url", slog.Any("url", url))
|
||||
r, err := http.Get(url)
|
||||
r, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
logger.Error("could not retreive note", slog.Any("error", err))
|
||||
return internal.RC_ERROR
|
||||
return internal.ReturnError(logger, "could not retreive note", err)
|
||||
}
|
||||
|
||||
logger.Debug("decoding body")
|
||||
body, err := io.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
logger.Error("could not read response", slog.Any("error", err))
|
||||
return internal.RC_ERROR
|
||||
return internal.ReturnError(logger, "could not read response", err)
|
||||
}
|
||||
|
||||
var content []byte
|
||||
|
@ -87,8 +106,7 @@ func handleMain() int {
|
|||
logger.Debug("decrypting note")
|
||||
content, err = internal.Decrypt(body, *password)
|
||||
if err != nil {
|
||||
logger.Error("could not decrypt paste", slog.Any("error", err))
|
||||
return internal.RC_ERROR
|
||||
return internal.ReturnError(logger, "could not decrypt paste", err)
|
||||
}
|
||||
} else {
|
||||
content = body
|
||||
|
@ -98,8 +116,7 @@ func handleMain() int {
|
|||
logger.Debug("writing output to file", slog.Any("file", *fileName))
|
||||
err = os.WriteFile(*fileName, content, 0644)
|
||||
if err != nil {
|
||||
logger.Error("could not write output to file", slog.Any("error", err))
|
||||
return internal.RC_ERROR
|
||||
return internal.ReturnError(logger, "could not write output to file", err)
|
||||
}
|
||||
} else {
|
||||
fmt.Printf("%s", content)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue