github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/powchain/provider.go (about) 1 package powchain 2 3 import ( 4 "encoding/base64" 5 "strings" 6 7 "github.com/prysmaticlabs/prysm/shared/httputils" 8 "github.com/prysmaticlabs/prysm/shared/httputils/authorizationmethod" 9 ) 10 11 // HttpEndpoint extracts an httputils.Endpoint from the provider parameter. 12 func HttpEndpoint(eth1Provider string) httputils.Endpoint { 13 endpoint := httputils.Endpoint{ 14 Url: "", 15 Auth: httputils.AuthorizationData{ 16 Method: authorizationmethod.None, 17 Value: "", 18 }} 19 20 authValues := strings.Split(eth1Provider, ",") 21 endpoint.Url = strings.TrimSpace(authValues[0]) 22 if len(authValues) > 2 { 23 log.Errorf( 24 "ETH1 endpoint string can contain one comma for specifying the authorization header to access the provider."+ 25 " String contains too many commas: %d. Skipping authorization.", len(authValues)-1) 26 } else if len(authValues) == 2 { 27 switch httputils.Method(strings.TrimSpace(authValues[1])) { 28 case authorizationmethod.Basic: 29 basicAuthValues := strings.Split(strings.TrimSpace(authValues[1]), " ") 30 if len(basicAuthValues) != 2 { 31 log.Errorf("Basic Authentication has incorrect format. Skipping authorization.") 32 } else { 33 endpoint.Auth.Method = authorizationmethod.Basic 34 endpoint.Auth.Value = base64.StdEncoding.EncodeToString([]byte(basicAuthValues[1])) 35 } 36 case authorizationmethod.Bearer: 37 bearerAuthValues := strings.Split(strings.TrimSpace(authValues[1]), " ") 38 if len(bearerAuthValues) != 2 { 39 log.Errorf("Bearer Authentication has incorrect format. Skipping authorization.") 40 } else { 41 endpoint.Auth.Method = authorizationmethod.Bearer 42 endpoint.Auth.Value = bearerAuthValues[1] 43 } 44 case authorizationmethod.None: 45 log.Errorf("Authorization has incorrect format or authorization type is not supported.") 46 } 47 } 48 return endpoint 49 }