this repo has no description
1package main
2
3import (
4 "github.com/bluesky-social/indigo/api/atproto"
5 "github.com/bluesky-social/indigo/api/bsky"
6 "github.com/bluesky-social/indigo/atproto/syntax"
7 "github.com/bluesky-social/indigo/lex/util"
8 "github.com/bluesky-social/indigo/xrpc"
9 "github.com/labstack/echo-contrib/session"
10 "github.com/labstack/echo/v4"
11)
12
13func (s *TestServer) handleMakePost(e echo.Context) error {
14 sess, err := session.Get("session", e)
15 if err != nil {
16 return err
17 }
18
19 did, ok := sess.Values["did"]
20 if !ok {
21 return e.Redirect(302, "/login")
22 }
23
24 var oauthSession OauthSession
25 if err := s.db.Raw("SELECT * FROM oauth_sessions WHERE did = ?", did).Scan(&oauthSession).Error; err != nil {
26 return err
27 }
28
29 args, err := authedReqArgsFromSession(&oauthSession)
30 if err != nil {
31 return err
32 }
33
34 post := bsky.FeedPost{
35 Text: "hello from atproto golang oauth client",
36 CreatedAt: syntax.DatetimeNow().String(),
37 }
38
39 input := atproto.RepoCreateRecord_Input{
40 Collection: "app.bsky.feed.post",
41 Repo: oauthSession.Did,
42 Record: &util.LexiconTypeDecoder{Val: &post},
43 }
44
45 var out atproto.RepoCreateRecord_Output
46 if err := s.xrpcCli.Do(e.Request().Context(), args, xrpc.Procedure, "application/json", "com.atproto.repo.createRecord", nil, input, &out); err != nil {
47 return err
48 }
49
50 return e.File(getFilePath("make-post.html"))
51}