common/apiserver/frommetaserver.go (51 lines of code) (raw):
package apiserver
import (
"fmt"
"strings"
"github.com/aliyun/aliyun_assist_client/thirdparty/sirupsen/logrus"
"github.com/aliyun/aliyun_assist_client/common/httpbase"
"github.com/aliyun/aliyun_assist_client/common/metaserver"
"github.com/aliyun/aliyun_assist_client/common/requester"
)
type MetaserverProvider struct {}
func (*MetaserverProvider) Name() string {
return "MetaserverProvider"
}
func (*MetaserverProvider) CACertificate(logger logrus.FieldLogger, refresh bool) ([]byte, error) {
certURL, err := metaserver.GetServerCrt(logger)
if err != nil {
return nil, err
}
if !strings.Contains(certURL, "http://") {
return nil, fmt.Errorf("invalid CA certificate URL from metaserver: %s", certURL)
}
pemCertsString, err := httpbase.Get(certURL)
if err != nil {
return nil, err
}
pemCerts := []byte(pemCertsString)
go cachedCAFileProvider.SaveCACertificate(logger, pemCerts)
return pemCerts, nil
}
func (p *MetaserverProvider) ServerDomain(logger logrus.FieldLogger) (string, error) {
serverURL, err := metaserver.GetServerUrl(logger)
if err != nil {
return "", err
}
if len(serverURL) == 0 {
return "", fmt.Errorf("empty server URL from metaserver")
}
serverURL = strings.TrimPrefix(serverURL, "https://")
return serverURL, nil
}
func (*MetaserverProvider) ExtraHTTPHeaders(logger logrus.FieldLogger) (map[string]string, error) {
return generalHTTPHeadersProvider.ExtraHTTPHeaders(logger)
}
func (p *MetaserverProvider) RegionId(logger logrus.FieldLogger) (string, error) {
regionId, err := metaserver.GetRegionId(logger)
if err != nil {
logger.WithError(err).Error("")
return "", requester.ErrNotProvided
}
return regionId, nil
}