this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor out some bgs code into its own package

+156 -139
+2 -1
cmd/bgs/fedmgr.go bgs/fedmgr.go
··· 1 - package main 1 + package bgs 2 2 3 3 import ( 4 4 "context" ··· 11 11 "time" 12 12 13 13 "github.com/gorilla/websocket" 14 + "github.com/labstack/gommon/log" 14 15 "github.com/whyrusleeping/gosky/events" 15 16 "gorm.io/gorm" 16 17 )
+18 -138
cmd/bgs/main.go bgs/bgs.go
··· 1 - package main 1 + package bgs 2 2 3 3 import ( 4 4 "context" ··· 8 8 "strings" 9 9 10 10 "github.com/gorilla/websocket" 11 - logging "github.com/ipfs/go-log" 12 11 "github.com/labstack/echo/v4" 13 12 "github.com/labstack/echo/v4/middleware" 14 - "github.com/urfave/cli/v2" 15 - "github.com/whyrusleeping/gosky/api" 13 + "github.com/labstack/gommon/log" 16 14 bsky "github.com/whyrusleeping/gosky/api/bsky" 17 - "github.com/whyrusleeping/gosky/carstore" 18 - cliutil "github.com/whyrusleeping/gosky/cmd/gosky/util" 19 15 "github.com/whyrusleeping/gosky/events" 20 16 "github.com/whyrusleeping/gosky/indexer" 21 - "github.com/whyrusleeping/gosky/notifs" 22 17 "github.com/whyrusleeping/gosky/plc" 23 18 "github.com/whyrusleeping/gosky/repomgr" 24 19 "github.com/whyrusleeping/gosky/types" 25 20 "github.com/whyrusleeping/gosky/xrpc" 26 - "go.opentelemetry.io/otel" 27 - "go.opentelemetry.io/otel/attribute" 28 - "go.opentelemetry.io/otel/exporters/jaeger" 29 - "go.opentelemetry.io/otel/sdk/resource" 30 - tracesdk "go.opentelemetry.io/otel/sdk/trace" 31 - semconv "go.opentelemetry.io/otel/semconv/v1.4.0" 32 21 "gorm.io/gorm" 33 - "gorm.io/plugin/opentelemetry/tracing" 34 22 ) 35 23 36 - var log = logging.Logger("bgs") 37 - 38 - func init() { 39 - logging.SetAllLoggers(logging.LevelDebug) 40 - } 41 - 42 - func main() { 43 - app := cli.NewApp() 44 - 45 - app.Flags = []cli.Flag{ 46 - &cli.BoolFlag{ 47 - Name: "jaeger", 48 - }, 49 - &cli.StringFlag{ 50 - Name: "db", 51 - Value: "sqlite=bgs.db", 52 - }, 53 - &cli.StringFlag{ 54 - Name: "carstoredb", 55 - Value: "sqlite=carstore.db", 56 - }, 57 - &cli.StringFlag{ 58 - Name: "carstore", 59 - Value: "bgscarstore", 60 - }, 61 - &cli.BoolFlag{ 62 - Name: "dbtracing", 63 - }, 64 - &cli.StringFlag{ 65 - Name: "plc", 66 - Usage: "hostname of the plc server", 67 - Value: "https://plc.directory", 68 - }, 69 - } 70 - 71 - app.Action = func(cctx *cli.Context) error { 72 - 73 - if cctx.Bool("jaeger") { 74 - url := "http://localhost:14268/api/traces" 75 - exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) 76 - if err != nil { 77 - return err 78 - } 79 - tp := tracesdk.NewTracerProvider( 80 - // Always be sure to batch in production. 81 - tracesdk.WithBatcher(exp), 82 - // Record information about this application in a Resource. 83 - tracesdk.WithResource(resource.NewWithAttributes( 84 - semconv.SchemaURL, 85 - semconv.ServiceNameKey.String("bgs"), 86 - attribute.String("environment", "test"), 87 - attribute.Int64("ID", 1), 88 - )), 89 - ) 90 - 91 - otel.SetTracerProvider(tp) 92 - } 93 - 94 - dbstr := cctx.String("db") 95 - 96 - db, err := cliutil.SetupDatabase(dbstr) 97 - if err != nil { 98 - return err 99 - } 100 - 101 - db.AutoMigrate(User{}) 102 - db.AutoMigrate(PDS{}) 103 - 104 - if cctx.Bool("dbtracing") { 105 - if err := db.Use(tracing.NewPlugin()); err != nil { 106 - return err 107 - } 108 - } 109 - 110 - cardb, err := cliutil.SetupDatabase(cctx.String("carstoredb")) 111 - if err != nil { 112 - return err 113 - } 114 - 115 - csdir := cctx.String("carstore") 116 - cstore, err := carstore.NewCarStore(cardb, csdir) 117 - if err != nil { 118 - return err 119 - } 120 - 121 - repoman := repomgr.NewRepoManager(db, cstore) 122 - 123 - evtman := events.NewEventManager() 124 - 125 - go evtman.Run() 126 - 127 - // not necessary to generate notifications, should probably make the 128 - // indexer just take optional callbacks for notification stuff 129 - notifman := notifs.NewNotificationManager(db, repoman.GetRecord) 130 - 131 - didr := &api.PLCServer{Host: cctx.String("plc")} 132 - 133 - ix, err := indexer.NewIndexer(db, notifman, evtman, didr) 134 - if err != nil { 135 - return err 136 - } 137 - 138 - repoman.SetEventHandler(func(ctx context.Context, evt *repomgr.RepoEvent) { 139 - if err := ix.HandleRepoEvent(ctx, evt); err != nil { 140 - log.Errorw("failed to handle repo event", "err", err) 141 - } 142 - }) 143 - 144 - bgs := &BGS{ 145 - index: ix, 146 - db: db, 147 - 148 - repoman: repoman, 149 - events: evtman, 150 - didr: didr, 151 - } 152 - bgs.slurper = NewSlurper(db, bgs.handleFedEvent) 153 - 154 - return bgs.Start(":2470") 155 - } 156 - 157 - app.RunAndExitOnError() 158 - } 159 - 160 24 type BGS struct { 161 25 index *indexer.Indexer 162 26 db *gorm.DB ··· 165 29 didr plc.PLCClient 166 30 167 31 repoman *repomgr.RepoManager 32 + } 33 + 34 + func NewBGS(db *gorm.DB, ix *indexer.Indexer, repoman *repomgr.RepoManager, evtman *events.EventManager, didr plc.PLCClient) *BGS { 35 + db.AutoMigrate(User{}) 36 + db.AutoMigrate(PDS{}) 37 + 38 + bgs := &BGS{ 39 + index: ix, 40 + db: db, 41 + 42 + repoman: repoman, 43 + events: evtman, 44 + didr: didr, 45 + } 46 + bgs.slurper = NewSlurper(db, bgs.handleFedEvent) 47 + return bgs 168 48 } 169 49 170 50 func (bgs *BGS) Start(listen string) error {
+136
cmd/bigsky/main.go
··· 1 + package main 2 + 3 + import ( 4 + "context" 5 + 6 + logging "github.com/ipfs/go-log" 7 + "github.com/urfave/cli/v2" 8 + "github.com/whyrusleeping/gosky/api" 9 + "github.com/whyrusleeping/gosky/bgs" 10 + "github.com/whyrusleeping/gosky/carstore" 11 + cliutil "github.com/whyrusleeping/gosky/cmd/gosky/util" 12 + "github.com/whyrusleeping/gosky/events" 13 + "github.com/whyrusleeping/gosky/indexer" 14 + "github.com/whyrusleeping/gosky/notifs" 15 + "github.com/whyrusleeping/gosky/repomgr" 16 + "go.opentelemetry.io/otel" 17 + "go.opentelemetry.io/otel/attribute" 18 + "go.opentelemetry.io/otel/exporters/jaeger" 19 + "go.opentelemetry.io/otel/sdk/resource" 20 + tracesdk "go.opentelemetry.io/otel/sdk/trace" 21 + semconv "go.opentelemetry.io/otel/semconv/v1.4.0" 22 + "gorm.io/plugin/opentelemetry/tracing" 23 + ) 24 + 25 + var log = logging.Logger("bgs") 26 + 27 + func init() { 28 + logging.SetAllLoggers(logging.LevelDebug) 29 + } 30 + 31 + func main() { 32 + app := cli.NewApp() 33 + 34 + app.Flags = []cli.Flag{ 35 + &cli.BoolFlag{ 36 + Name: "jaeger", 37 + }, 38 + &cli.StringFlag{ 39 + Name: "db", 40 + Value: "sqlite=bgs.db", 41 + }, 42 + &cli.StringFlag{ 43 + Name: "carstoredb", 44 + Value: "sqlite=carstore.db", 45 + }, 46 + &cli.StringFlag{ 47 + Name: "carstore", 48 + Value: "bgscarstore", 49 + }, 50 + &cli.BoolFlag{ 51 + Name: "dbtracing", 52 + }, 53 + &cli.StringFlag{ 54 + Name: "plc", 55 + Usage: "hostname of the plc server", 56 + Value: "https://plc.directory", 57 + }, 58 + } 59 + 60 + app.Action = func(cctx *cli.Context) error { 61 + 62 + if cctx.Bool("jaeger") { 63 + url := "http://localhost:14268/api/traces" 64 + exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) 65 + if err != nil { 66 + return err 67 + } 68 + tp := tracesdk.NewTracerProvider( 69 + // Always be sure to batch in production. 70 + tracesdk.WithBatcher(exp), 71 + // Record information about this application in a Resource. 72 + tracesdk.WithResource(resource.NewWithAttributes( 73 + semconv.SchemaURL, 74 + semconv.ServiceNameKey.String("bgs"), 75 + attribute.String("environment", "test"), 76 + attribute.Int64("ID", 1), 77 + )), 78 + ) 79 + 80 + otel.SetTracerProvider(tp) 81 + } 82 + 83 + dbstr := cctx.String("db") 84 + 85 + db, err := cliutil.SetupDatabase(dbstr) 86 + if err != nil { 87 + return err 88 + } 89 + 90 + if cctx.Bool("dbtracing") { 91 + if err := db.Use(tracing.NewPlugin()); err != nil { 92 + return err 93 + } 94 + } 95 + 96 + cardb, err := cliutil.SetupDatabase(cctx.String("carstoredb")) 97 + if err != nil { 98 + return err 99 + } 100 + 101 + csdir := cctx.String("carstore") 102 + cstore, err := carstore.NewCarStore(cardb, csdir) 103 + if err != nil { 104 + return err 105 + } 106 + 107 + repoman := repomgr.NewRepoManager(db, cstore) 108 + 109 + evtman := events.NewEventManager() 110 + 111 + go evtman.Run() 112 + 113 + // not necessary to generate notifications, should probably make the 114 + // indexer just take optional callbacks for notification stuff 115 + notifman := notifs.NewNotificationManager(db, repoman.GetRecord) 116 + 117 + didr := &api.PLCServer{Host: cctx.String("plc")} 118 + 119 + ix, err := indexer.NewIndexer(db, notifman, evtman, didr) 120 + if err != nil { 121 + return err 122 + } 123 + 124 + repoman.SetEventHandler(func(ctx context.Context, evt *repomgr.RepoEvent) { 125 + if err := ix.HandleRepoEvent(ctx, evt); err != nil { 126 + log.Errorw("failed to handle repo event", "err", err) 127 + } 128 + }) 129 + 130 + bgs := bgs.NewBGS(db, ix, repoman, evtman, didr) 131 + 132 + return bgs.Start(":2470") 133 + } 134 + 135 + app.RunAndExitOnError() 136 + }