this repo has no description

add profile to test

Changed files
+62
cmd
+51
cmd/client_test/handle_profile.go
···
+
package main
+
+
import (
+
"github.com/bluesky-social/indigo/api/bsky"
+
"github.com/bluesky-social/indigo/xrpc"
+
"github.com/labstack/echo-contrib/session"
+
"github.com/labstack/echo/v4"
+
)
+
+
func (s *TestServer) handleProfile(e echo.Context) error {
+
sess, err := session.Get("session", e)
+
if err != nil {
+
return err
+
}
+
+
did, ok := sess.Values["did"]
+
if !ok {
+
return e.Redirect(302, "/login")
+
}
+
+
var oauthSession OauthSession
+
if err := s.db.Raw("SELECT * FROM oauth_sessions WHERE did = ?", did).Scan(&oauthSession).Error; err != nil {
+
return err
+
}
+
+
args, err := authedReqArgsFromSession(&oauthSession)
+
if err != nil {
+
return err
+
}
+
+
var out bsky.ActorDefs_ProfileViewDetailed
+
if err := s.xrpcCli.Do(e.Request().Context(), args, xrpc.Query, "", "app.bsky.actor.getProfile", map[string]any{"actor": oauthSession.Did}, nil, &out); err != nil {
+
return err
+
}
+
+
var dn string
+
if out.DisplayName != nil {
+
dn = *out.DisplayName
+
}
+
+
var desc string
+
if out.Description != nil {
+
desc = *out.Description
+
}
+
+
return e.Render(200, "profile.html", map[any]any{
+
"DisplayName": dn,
+
"Description": desc,
+
"Handle": out.Handle,
+
})
+
}
+3
cmd/client_test/html/index.html
···
<ul>
{{ if .Did }}
<li>
+
<a href="/profile">Profile</a>
+
</li>
+
<li>
<a href="/make-post">Make a Post</a>
</li>
<li>
+7
cmd/client_test/html/profile.html
···
+
<!doctype html>
+
<html>
+
<h2>{{ .DisplayName }}</h2>
+
<p>{{ .Handle }}</p>
+
<p>{{ .Description }}</p>
+
<a href="/">Go Home</a>
+
</html>
+1
cmd/client_test/main.go
···
s.e.File("/login", getFilePath("login.html"))
s.e.POST("/login", s.handleLoginSubmit)
s.e.GET("/logout", s.handleLogout)
+
s.e.GET("/profile", s.handleProfile)
s.e.GET("/make-post", s.handleMakePost)
s.e.GET("/callback", s.handleCallback)
s.e.GET("/oauth/client-metadata.json", s.handleClientMetadata)