Live video on the AT Protocol
79
fork

Configure Feed

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

at eli/components 45 lines 843 B view raw
1package atproto 2 3import ( 4 "context" 5 "encoding/json" 6 "os" 7 8 "github.com/lestrrat-go/jwx/v2/jwk" 9 oauth_helpers "github.com/streamplace/atproto-oauth-golang/helpers" 10 "stream.place/streamplace/pkg/log" 11) 12 13func EnsureJWK(ctx context.Context, fPath string) (jwk.Key, error) { 14 var key jwk.Key 15 _, err := os.Stat(fPath) 16 if err == nil { 17 b, err := os.ReadFile(fPath) 18 if err != nil { 19 return nil, err 20 } 21 key, err = jwk.ParseKey(b) 22 if err != nil { 23 return nil, err 24 } 25 } else if os.IsNotExist(err) { 26 key, err = oauth_helpers.GenerateKey(nil) 27 if err != nil { 28 return nil, err 29 } 30 31 b, err := json.Marshal(key) 32 if err != nil { 33 return nil, err 34 } 35 36 if err := os.WriteFile(fPath, b, 0600); err != nil { 37 return nil, err 38 } 39 log.Log(ctx, "generated JWK", "path", fPath) 40 } else { 41 return nil, err 42 } 43 44 return key, nil 45}