Monorepo for Tangled tangled.org
3

Configure Feed

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

1package pulls 2 3import ( 4 "bytes" 5 "compress/gzip" 6 "fmt" 7 "io" 8 "log/slog" 9 10 "tangled.org/core/appview/config" 11 "tangled.org/core/appview/db" 12 pulls_indexer "tangled.org/core/appview/indexer/pulls" 13 "tangled.org/core/appview/knotacl" 14 "tangled.org/core/appview/mentions" 15 "tangled.org/core/appview/models" 16 "tangled.org/core/appview/notify" 17 "tangled.org/core/appview/oauth" 18 "tangled.org/core/appview/pages" 19 "tangled.org/core/appview/reporesolver" 20 "tangled.org/core/appview/validator" 21 "tangled.org/core/idresolver" 22 "tangled.org/core/ogre" 23 24 indigoxrpc "github.com/bluesky-social/indigo/xrpc" 25) 26 27const ApplicationGzip = "application/gzip" 28 29type Pulls struct { 30 oauth *oauth.OAuth 31 repoResolver *reporesolver.RepoResolver 32 pages *pages.Pages 33 idResolver *idresolver.Resolver 34 mentionsResolver *mentions.Resolver 35 db *db.DB 36 config *config.Config 37 notifier notify.Notifier 38 acl *knotacl.Service 39 logger *slog.Logger 40 validator *validator.Validator 41 indexer *pulls_indexer.Indexer 42 ogreClient *ogre.Client 43} 44 45func New( 46 oauth *oauth.OAuth, 47 repoResolver *reporesolver.RepoResolver, 48 pages *pages.Pages, 49 resolver *idresolver.Resolver, 50 mentionsResolver *mentions.Resolver, 51 db *db.DB, 52 config *config.Config, 53 notifier notify.Notifier, 54 acl *knotacl.Service, 55 validator *validator.Validator, 56 indexer *pulls_indexer.Indexer, 57 logger *slog.Logger, 58) *Pulls { 59 return &Pulls{ 60 oauth: oauth, 61 repoResolver: repoResolver, 62 pages: pages, 63 idResolver: resolver, 64 mentionsResolver: mentionsResolver, 65 db: db, 66 config: config, 67 notifier: notifier, 68 acl: acl, 69 logger: logger, 70 validator: validator, 71 indexer: indexer, 72 ogreClient: ogre.NewClient(config.Ogre.Host), 73 } 74} 75 76func (s *Pulls) knotClient(host string) *indigoxrpc.Client { 77 scheme := "https" 78 if s.config.Core.Dev { 79 scheme = "http" 80 } 81 return &indigoxrpc.Client{Host: fmt.Sprintf("%s://%s", scheme, host)} 82} 83 84func gz(s string) io.Reader { 85 var b bytes.Buffer 86 w := gzip.NewWriter(&b) 87 w.Write([]byte(s)) 88 w.Close() 89 return &b 90} 91 92func ptrPullState(s models.PullState) *models.PullState { return &s }