···97979898func (s *Server) RegisterHandlersPlaceStream(e *echo.Echo) error {
9999 e.GET("/xrpc/place.stream.graph.getFollowingUser", s.HandlePlaceStreamGraphGetFollowingUser)
100100+ e.GET("/xrpc/place.stream.live.getSegments", s.HandlePlaceStreamLiveGetSegments)
100101 return nil
101102}
102103···109110 var handleErr error
110111 // func (s *Server) handlePlaceStreamGraphGetFollowingUser(ctx context.Context,subjectDID string,userDID string) (*placestreamtypes.GraphGetFollowingUser_Output, error)
111112 out, handleErr = s.handlePlaceStreamGraphGetFollowingUser(ctx, subjectDID, userDID)
113113+ if handleErr != nil {
114114+ return handleErr
115115+ }
116116+ return c.JSON(200, out)
117117+}
118118+119119+func (s *Server) HandlePlaceStreamLiveGetSegments(c echo.Context) error {
120120+ ctx, span := otel.Tracer("server").Start(c.Request().Context(), "HandlePlaceStreamLiveGetSegments")
121121+ defer span.End()
122122+ before := c.QueryParam("before")
123123+124124+ var limit int
125125+ if p := c.QueryParam("limit"); p != "" {
126126+ var err error
127127+ limit, err = strconv.Atoi(p)
128128+ if err != nil {
129129+ return err
130130+ }
131131+ } else {
132132+ limit = 50
133133+ }
134134+ userDID := c.QueryParam("userDID")
135135+ var out *placestreamtypes.LiveGetSegments_Output
136136+ var handleErr error
137137+ // func (s *Server) handlePlaceStreamLiveGetSegments(ctx context.Context,before string,limit int,userDID string) (*placestreamtypes.LiveGetSegments_Output, error)
138138+ out, handleErr = s.handlePlaceStreamLiveGetSegments(ctx, before, limit, userDID)
112139 if handleErr != nil {
113140 return handleErr
114141 }
+34
pkg/streamplace/livegetSegments.go
···11+// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
22+33+package streamplace
44+55+// schema: place.stream.live.getSegments
66+77+import (
88+ "context"
99+1010+ "github.com/bluesky-social/indigo/xrpc"
1111+)
1212+1313+// LiveGetSegments_Output is the output of a place.stream.live.getSegments call.
1414+type LiveGetSegments_Output struct {
1515+ Segments []*Segment_SegmentView `json:"segments,omitempty" cborgen:"segments,omitempty"`
1616+}
1717+1818+// LiveGetSegments calls the XRPC method "place.stream.live.getSegments".
1919+//
2020+// userDID: The DID of the potentially-following user
2121+func LiveGetSegments(ctx context.Context, c *xrpc.Client, before string, limit int64, userDID string) (*LiveGetSegments_Output, error) {
2222+ var out LiveGetSegments_Output
2323+2424+ params := map[string]interface{}{
2525+ "before": before,
2626+ "limit": limit,
2727+ "userDID": userDID,
2828+ }
2929+ if err := c.Do(ctx, xrpc.Query, "", "place.stream.live.getSegments", params, nil, &out); err != nil {
3030+ return nil, err
3131+ }
3232+3333+ return &out, nil
3434+}
+6
pkg/streamplace/streamsegment.go
···4040 Num int64 `json:"num" cborgen:"num"`
4141}
42424343+// Segment_SegmentView is a "segmentView" in the place.stream.segment schema.
4444+type Segment_SegmentView struct {
4545+ Cid string `json:"cid" cborgen:"cid"`
4646+ Record *util.LexiconTypeDecoder `json:"record" cborgen:"record"`
4747+}
4848+4349// Segment_Video is a "video" in the place.stream.segment schema.
4450type Segment_Video struct {
4551 Codec string `json:"codec" cborgen:"codec"`