aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2024-02-12 04:32:43 -0800
committerXe Iaso <me@xeiaso.net>2024-02-12 04:32:43 -0800
commite02b9ef3ee4394db1a387b146aa5faeea95efa3a (patch)
treee5b6f2c7c21dda6a5e4ea1617e10e3437c93979c /cmd
parent0eb26108f65b68aa4e99786f7f7a0b28cd356f72 (diff)
downloadxesite-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.go22
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 {