Upload images to your PDS and get instant CDN URLs via images.blue
at main 50 lines 1.6 kB view raw
1package auth 2 3import ( 4 _ "embed" 5 "encoding/json" 6 "strings" 7 8 "github.com/bluesky-social/indigo/atproto/auth/oauth" 9) 10 11// NOTE: if the server-side metadata changes, this file will also need to change. 12// 13//go:embed client-metadata.json 14var metadataJson []byte 15 16type ClientMetadata struct { 17 ClientID string `json:"client_id"` 18 ClientName string `json:"client_name"` 19 SubjectType string `json:"subject_type"` 20 ClientURI string `json:"client_uri"` 21 RedirectURIs []string `json:"redirect_uris"` 22 GrantTypes []string `json:"grant_types"` 23 ResponseTypes []string `json:"response_types"` 24 ApplicationType string `json:"application_type"` 25 DpopBoundAccessTokens bool `json:"dpop_bound_access_tokens"` 26 JwksURI string `json:"jwks_uri"` 27 Scope string `json:"scope"` 28 TokenEndpointAuthMethod string `json:"token_endpoint_auth_method"` 29 TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg"` 30} 31 32func GetClientMetadata() ClientMetadata { 33 var cm ClientMetadata 34 json.Unmarshal(metadataJson, &cm) 35 return cm 36} 37 38// GetClientConfig returns the OAuth client configuration for indigo 39func GetClientConfig() oauth.ClientConfig { 40 metadata := GetClientMetadata() 41 42 // Split space-separated scopes from metadata into slice 43 scopes := strings.Fields(metadata.Scope) 44 45 return oauth.NewPublicConfig( 46 metadata.ClientID, 47 metadata.RedirectURIs[0], 48 scopes, 49 ) 50}