diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-02-12 04:32:43 -0800 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2024-02-12 04:32:43 -0800 |
| commit | e02b9ef3ee4394db1a387b146aa5faeea95efa3a (patch) | |
| tree | e5b6f2c7c21dda6a5e4ea1617e10e3437c93979c /cmd | |
| parent | 0eb26108f65b68aa4e99786f7f7a0b28cd356f72 (diff) | |
| download | xesite-e02b9ef3ee4394db1a387b146aa5faeea95efa3a.tar.xz xesite-e02b9ef3ee4394db1a387b146aa5faeea95efa3a.zip | |
cmd/patreon-saasproxy: use twirp/protobuf instead of yolo json
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/patreon-saasproxy/main.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cmd/patreon-saasproxy/main.go b/cmd/patreon-saasproxy/main.go index cfe9717..b44a697 100644 --- a/cmd/patreon-saasproxy/main.go +++ b/cmd/patreon-saasproxy/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "encoding/base64" "encoding/json" "expvar" @@ -14,6 +15,8 @@ import ( "github.com/facebookgo/flagenv" _ "github.com/joho/godotenv/autoload" "golang.org/x/oauth2" + "google.golang.org/protobuf/types/known/emptypb" + "google.golang.org/protobuf/types/known/timestamppb" "gopkg.in/mxpv/patreon-go.v1" "tailscale.com/client/tailscale" "tailscale.com/hostinfo" @@ -21,6 +24,7 @@ import ( "tailscale.com/tsnet" "tailscale.com/tsweb" "xeiaso.net/v4/internal" + "xeiaso.net/v4/internal/adminpb" ) var ( @@ -110,6 +114,9 @@ func main() { log.Fatal(err) } + ph := adminpb.NewPatreonServer(s) + http.Handle(adminpb.PatreonPathPrefix, ph) + slog.Info("listening over tailscale", "hostname", *tailscaleHostname) log.Fatal(http.Serve(ln, nil)) @@ -120,6 +127,21 @@ type Server struct { cts oauth2.TokenSource } +func (s *Server) GetToken(ctx context.Context, _ *emptypb.Empty) (*adminpb.PatreonToken, error) { + token, err := s.cts.Token() + if err != nil { + slog.Error("token fetch failed", "err", err) + return nil, err + } + + return &adminpb.PatreonToken{ + AccessToken: token.AccessToken, + TokenType: token.TokenType, + RefreshToken: token.RefreshToken, + Expiry: timestamppb.New(token.Expiry), + }, nil +} + func (s *Server) GiveToken(w http.ResponseWriter, r *http.Request) { whois, err := s.lc.WhoIs(r.Context(), r.RemoteAddr) if err != nil { |
