alpha
Login
or
Join now
gwen.works
/
churros-notella
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
fix: make firebase pushes work!!!
author
Ewen Le Bihan
date
2 years ago
(Oct 31, 2024, 10:12 AM +0100)
commit
6290b3fe
6290b3fe5b87ae0a51c45060005f709d9c2f77b1
parent
64013107
640131076efe52a0043f74b502519e5258da4a4b
+75
-9
5 changed files
Expand all
Collapse all
Unified
Split
config.go
debug.go
firebase.go
go.mod
go.sum
+8
-1
config.go
Reviewed
···
16
16
VapidPrivateKey string `env:"VAPID_PRIVATE_KEY"`
17
17
ContactEmail string `env:"CONTACT_EMAIL"`
18
18
FirebaseServiceAccount string `env:"FIREBASE_SERVICE_ACCOUNT"`
19
19
-
AppPackageId string `env:"APP_PACKAGE_ID" envDefault:"app.churrros"`
19
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
50
+
51
51
+
err = setupFirebaseClient()
52
52
+
if err != nil {
53
53
+
panic(fmt.Errorf("could not setup firebase client: %w", err))
54
54
+
}
55
55
+
ll.Log("Initialized", "cyan", "firebase client")
56
56
+
50
57
}
+32
debug.go
Reviewed
···
1
1
+
package notella
2
2
+
3
3
+
import (
4
4
+
"log"
5
5
+
"net/http"
6
6
+
"net/http/httputil"
7
7
+
)
8
8
+
9
9
+
type debugTransport struct {
10
10
+
t http.RoundTripper
11
11
+
}
12
12
+
13
13
+
func (d debugTransport) RoundTrip(req *http.Request) (*http.Response, error) {
14
14
+
reqDump, err := httputil.DumpRequest(req, true)
15
15
+
if err != nil {
16
16
+
return nil, err
17
17
+
}
18
18
+
log.Printf("%s", reqDump)
19
19
+
20
20
+
resp, err := d.t.RoundTrip(req)
21
21
+
if err != nil {
22
22
+
return nil, err
23
23
+
}
24
24
+
25
25
+
respDump, err := httputil.DumpResponse(resp, true)
26
26
+
if err != nil {
27
27
+
resp.Body.Close()
28
28
+
return nil, err
29
29
+
}
30
30
+
log.Printf("%s", respDump)
31
31
+
return resp, nil
32
32
+
}
+26
-2
firebase.go
Reviewed
···
4
4
"context"
5
5
"encoding/json"
6
6
"fmt"
7
7
+
"net/http"
8
8
+
"os"
7
9
"strings"
10
10
+
"time"
8
11
9
12
firebase "firebase.google.com/go/v4"
10
13
"firebase.google.com/go/v4/messaging"
14
14
+
"golang.org/x/oauth2"
15
15
+
"golang.org/x/oauth2/google"
11
16
"google.golang.org/api/option"
12
17
)
13
18
14
19
var firebaseClient *firebase.App
20
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
72
-
firebaseClient, err = firebase.NewApp(context.Background(),
73
73
-
&firebase.Config{},
78
78
+
httpClient := http.DefaultClient
79
79
+
if os.Getenv("DEBUG") == "1" {
80
80
+
httpClient = &http.Client{
81
81
+
Transport: debugTransport{t: http.DefaultTransport},
82
82
+
}
83
83
+
}
84
84
+
85
85
+
ctxWithClient := context.WithValue(firebaseCtx, oauth2.HTTPClient, httpClient)
86
86
+
creds, _ := google.CredentialsFromJSON(ctxWithClient, []byte(config.FirebaseServiceAccount), "https://www.googleapis.com/auth/firebase.messaging")
87
87
+
88
88
+
client := &http.Client{
89
89
+
Transport: &oauth2.Transport{
90
90
+
Source: creds.TokenSource,
91
91
+
Base: httpClient.Transport,
92
92
+
},
93
93
+
Timeout: 10 * time.Second,
94
94
+
}
95
95
+
96
96
+
firebaseClient, err = firebase.NewApp(firebaseCtx, nil,
74
97
option.WithCredentialsJSON([]byte(config.FirebaseServiceAccount)),
98
98
+
option.WithHTTPClient(client),
75
99
)
76
100
return
77
101
}
+2
-2
go.mod
Reviewed
···
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
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
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
57
-
google.golang.org/appengine/v2 v2.0.2 // indirect
57
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
Reviewed
···
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
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
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
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
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
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
226
-
google.golang.org/appengine/v2 v2.0.2 h1:MSqyWy2shDLwG7chbwBJ5uMyw6SNqJzhJHNDwYB0Akk=
227
227
-
google.golang.org/appengine/v2 v2.0.2/go.mod h1:PkgRUWz4o1XOvbqtWTkBtCitEJ5Tp4HoVEdMMYQR/8E=
227
227
+
google.golang.org/appengine/v2 v2.0.6 h1:LvPZLGuchSBslPBp+LAhihBeGSiRh1myRoYK4NtuBIw=
228
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
254
+
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
255
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=