44 lines
873 B
Go
44 lines
873 B
Go
|
|
package auth
|
||
|
|
|
||
|
|
import (
|
||
|
|
"bufio"
|
||
|
|
"fmt"
|
||
|
|
"io"
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
func LoginPasteToken(provider string, r io.Reader) (*AuthCredential, error) {
|
||
|
|
fmt.Printf("Paste your API key or session token from %s:\n", providerDisplayName(provider))
|
||
|
|
fmt.Print("> ")
|
||
|
|
|
||
|
|
scanner := bufio.NewScanner(r)
|
||
|
|
if !scanner.Scan() {
|
||
|
|
if err := scanner.Err(); err != nil {
|
||
|
|
return nil, fmt.Errorf("reading token: %w", err)
|
||
|
|
}
|
||
|
|
return nil, fmt.Errorf("no input received")
|
||
|
|
}
|
||
|
|
|
||
|
|
token := strings.TrimSpace(scanner.Text())
|
||
|
|
if token == "" {
|
||
|
|
return nil, fmt.Errorf("token cannot be empty")
|
||
|
|
}
|
||
|
|
|
||
|
|
return &AuthCredential{
|
||
|
|
AccessToken: token,
|
||
|
|
Provider: provider,
|
||
|
|
AuthMethod: "token",
|
||
|
|
}, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func providerDisplayName(provider string) string {
|
||
|
|
switch provider {
|
||
|
|
case "anthropic":
|
||
|
|
return "console.anthropic.com"
|
||
|
|
case "openai":
|
||
|
|
return "platform.openai.com"
|
||
|
|
default:
|
||
|
|
return provider
|
||
|
|
}
|
||
|
|
}
|