This repository has no description
0

Configure Feed

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

core / appview / pulls / pulls.go
2.5 kB 90 lines
1package pulls 2 3import ( 4 "log/slog" 5 "time" 6 7 "tangled.org/core/appview/config" 8 "tangled.org/core/appview/db" 9 pulls_indexer "tangled.org/core/appview/indexer/pulls" 10 "tangled.org/core/appview/knotacl" 11 "tangled.org/core/appview/mentions" 12 "tangled.org/core/appview/models" 13 "tangled.org/core/appview/notify" 14 "tangled.org/core/appview/oauth" 15 "tangled.org/core/appview/pages" 16 "tangled.org/core/appview/reporesolver" 17 knotmirror "tangled.org/core/gitmirror/proto/gen" 18 "tangled.org/core/idresolver" 19 "tangled.org/core/ogre" 20 "tangled.org/core/types" 21 22 "github.com/bluesky-social/indigo/util" 23 indigoxrpc "github.com/bluesky-social/indigo/xrpc" 24 "github.com/hashicorp/golang-lru/v2/expirable" 25) 26 27const ApplicationGzip = "application/gzip" 28 29const ( 30 diffCacheSize = 128 31 diffCacheTTL = 15 * time.Minute 32) 33 34type Pulls struct { 35 oauth *oauth.OAuth 36 repoResolver *reporesolver.RepoResolver 37 pages *pages.Pages 38 idResolver *idresolver.Resolver 39 mentionsResolver *mentions.Resolver 40 db *db.DB 41 config *config.Config 42 notifier notify.Notifier 43 acl *knotacl.Service 44 logger *slog.Logger 45 indexer *pulls_indexer.Indexer 46 ogreClient *ogre.Client 47 diffCache *expirable.LRU[string, types.DiffRenderer] 48 gitmirror knotmirror.GitMirrorServiceClient 49 50 knotMirrorXRPC *indigoxrpc.Client 51} 52 53func New( 54 oauth *oauth.OAuth, 55 repoResolver *reporesolver.RepoResolver, 56 pages *pages.Pages, 57 resolver *idresolver.Resolver, 58 mentionsResolver *mentions.Resolver, 59 db *db.DB, 60 config *config.Config, 61 notifier notify.Notifier, 62 acl *knotacl.Service, 63 indexer *pulls_indexer.Indexer, 64 logger *slog.Logger, 65 gitmirror knotmirror.GitMirrorServiceClient, 66) *Pulls { 67 return &Pulls{ 68 oauth: oauth, 69 repoResolver: repoResolver, 70 pages: pages, 71 idResolver: resolver, 72 mentionsResolver: mentionsResolver, 73 db: db, 74 config: config, 75 notifier: notifier, 76 acl: acl, 77 logger: logger, 78 indexer: indexer, 79 ogreClient: ogre.NewClient(config.Ogre.Host), 80 diffCache: expirable.NewLRU[string, types.DiffRenderer](diffCacheSize, nil, diffCacheTTL), 81 gitmirror: gitmirror, 82 83 knotMirrorXRPC: &indigoxrpc.Client{ 84 Host: config.KnotMirror.Url, 85 Client: util.RobustHTTPClient(), 86 }, 87 } 88} 89 90func ptrPullState(s models.PullState) *models.PullState { return &s }