This repository has no description
0

Configure Feed

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

fix: make firebase pushes work!!!

+75 -9
+8 -1
config.go
··· 16 16 VapidPrivateKey string `env:"VAPID_PRIVATE_KEY"` 17 17 ContactEmail string `env:"CONTACT_EMAIL"` 18 18 FirebaseServiceAccount string `env:"FIREBASE_SERVICE_ACCOUNT"` 19 - AppPackageId string `env:"APP_PACKAGE_ID" envDefault:"app.churrros"` 19 + AppPackageId string `env:"APP_PACKAGE_ID" envDefault:"app.churros"` 20 20 } 21 21 22 22 func LoadConfiguration() (Configuration, error) { ··· 47 47 if err != nil { 48 48 panic(fmt.Errorf("could not load configuration: %w", err)) 49 49 } 50 + 51 + err = setupFirebaseClient() 52 + if err != nil { 53 + panic(fmt.Errorf("could not setup firebase client: %w", err)) 54 + } 55 + ll.Log("Initialized", "cyan", "firebase client") 56 + 50 57 }
+32
debug.go
··· 1 + package notella 2 + 3 + import ( 4 + "log" 5 + "net/http" 6 + "net/http/httputil" 7 + ) 8 + 9 + type debugTransport struct { 10 + t http.RoundTripper 11 + } 12 + 13 + func (d debugTransport) RoundTrip(req *http.Request) (*http.Response, error) { 14 + reqDump, err := httputil.DumpRequest(req, true) 15 + if err != nil { 16 + return nil, err 17 + } 18 + log.Printf("%s", reqDump) 19 + 20 + resp, err := d.t.RoundTrip(req) 21 + if err != nil { 22 + return nil, err 23 + } 24 + 25 + respDump, err := httputil.DumpResponse(resp, true) 26 + if err != nil { 27 + resp.Body.Close() 28 + return nil, err 29 + } 30 + log.Printf("%s", respDump) 31 + return resp, nil 32 + }
+26 -2
firebase.go
··· 4 4 "context" 5 5 "encoding/json" 6 6 "fmt" 7 + "net/http" 8 + "os" 7 9 "strings" 10 + "time" 8 11 9 12 firebase "firebase.google.com/go/v4" 10 13 "firebase.google.com/go/v4/messaging" 14 + "golang.org/x/oauth2" 15 + "golang.org/x/oauth2/google" 11 16 "google.golang.org/api/option" 12 17 ) 13 18 14 19 var firebaseClient *firebase.App 20 + var firebaseCtx = context.Background() 15 21 16 22 func (msg Message) SendToFirebase(groupId string, subs []Subscription) error { 17 23 fcm, err := firebaseClient.Messaging(firebaseCtx) ··· 69 75 } 70 76 71 77 func setupFirebaseClient() (err error) { 72 - firebaseClient, err = firebase.NewApp(context.Background(), 73 - &firebase.Config{}, 78 + httpClient := http.DefaultClient 79 + if os.Getenv("DEBUG") == "1" { 80 + httpClient = &http.Client{ 81 + Transport: debugTransport{t: http.DefaultTransport}, 82 + } 83 + } 84 + 85 + ctxWithClient := context.WithValue(firebaseCtx, oauth2.HTTPClient, httpClient) 86 + creds, _ := google.CredentialsFromJSON(ctxWithClient, []byte(config.FirebaseServiceAccount), "https://www.googleapis.com/auth/firebase.messaging") 87 + 88 + client := &http.Client{ 89 + Transport: &oauth2.Transport{ 90 + Source: creds.TokenSource, 91 + Base: httpClient.Transport, 92 + }, 93 + Timeout: 10 * time.Second, 94 + } 95 + 96 + firebaseClient, err = firebase.NewApp(firebaseCtx, nil, 74 97 option.WithCredentialsJSON([]byte(config.FirebaseServiceAccount)), 98 + option.WithHTTPClient(client), 75 99 ) 76 100 return 77 101 }
+2 -2
go.mod
··· 11 11 github.com/orcaman/concurrent-map/v2 v2.0.1 12 12 github.com/shopspring/decimal v1.4.0 13 13 github.com/steebchen/prisma-client-go v0.42.0 14 + golang.org/x/oauth2 v0.23.0 14 15 google.golang.org/api v0.203.0 15 16 ) 16 17 ··· 50 51 go.opentelemetry.io/otel/trace v1.29.0 // indirect 51 52 golang.org/x/crypto v0.28.0 // indirect 52 53 golang.org/x/net v0.30.0 // indirect 53 - golang.org/x/oauth2 v0.23.0 // indirect 54 54 golang.org/x/sync v0.8.0 // indirect 55 55 golang.org/x/text v0.19.0 // indirect 56 56 golang.org/x/time v0.7.0 // indirect 57 - google.golang.org/appengine/v2 v2.0.2 // indirect 57 + google.golang.org/appengine/v2 v2.0.6 // indirect 58 58 google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 // indirect 59 59 google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect 60 60 google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
+7 -4
go.sum
··· 60 60 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 61 61 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= 62 62 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 63 - github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 64 63 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 65 64 github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= 66 65 github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= ··· 69 68 github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= 70 69 github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= 71 70 github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= 71 + github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 72 72 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= 73 73 github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 74 74 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= ··· 77 77 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 78 78 github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 79 79 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 80 + github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 80 81 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= 81 82 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 82 83 github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= ··· 167 168 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 168 169 golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 169 170 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 170 - golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 171 171 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 172 172 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 173 173 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= ··· 203 203 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 204 204 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 205 205 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 206 + golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= 206 207 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 207 208 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 208 209 golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= ··· 223 224 google.golang.org/api v0.203.0/go.mod h1:BuOVyCSYEPwJb3npWvDnNmFI92f3GeRnHNkETneT3SI= 224 225 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= 225 226 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 226 - google.golang.org/appengine/v2 v2.0.2 h1:MSqyWy2shDLwG7chbwBJ5uMyw6SNqJzhJHNDwYB0Akk= 227 - google.golang.org/appengine/v2 v2.0.2/go.mod h1:PkgRUWz4o1XOvbqtWTkBtCitEJ5Tp4HoVEdMMYQR/8E= 227 + google.golang.org/appengine/v2 v2.0.6 h1:LvPZLGuchSBslPBp+LAhihBeGSiRh1myRoYK4NtuBIw= 228 + google.golang.org/appengine/v2 v2.0.6/go.mod h1:WoEXGoXNfa0mLvaH5sV3ZSGXwVmy8yf7Z1JKf3J3wLI= 228 229 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 229 230 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= 230 231 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= ··· 250 251 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= 251 252 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= 252 253 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= 254 + google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 255 + google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 253 256 google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= 254 257 google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 255 258 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=