in src/go/configinfo/service_info.go [90:171]
func NewServiceInfoFromServiceConfig(serviceConfig *confpb.Service, opts options.ConfigGeneratorOptions) (*ServiceInfo, error) {
if serviceConfig == nil {
return nil, fmt.Errorf("unexpected empty service config")
}
if len(serviceConfig.GetApis()) == 0 {
return nil, fmt.Errorf("service config must have one api at least")
}
serviceInfo := &ServiceInfo{
Name: serviceConfig.GetName(),
ConfigID: serviceConfig.GetId(),
serviceConfig: serviceConfig,
Options: opts,
Methods: make(map[string]*MethodInfo),
AllTranscodingIgnoredQueryParams: make(map[string]bool),
}
// Calling order is required due to following variable usage
// * AllowCors:
// set by: processEndpoints
// used by: processHttpRule
// * BackendInfo map to MethodInfo
// set by processApi
// used by processBackendRule
// * GrpcSupportRequired:
// set by processBackendRule, buildLocalBackend
// used by addGrpcHttpRules
// * Methods:
// set by processApis, processHttpRule, addGrpcHttpRules, processUsageRule
// used by processApiKeyLocations
if err := serviceInfo.buildBackendFromAddress(opts.BackendAddress); err != nil {
return nil, err
}
serviceInfo.processEndpoints()
if err := serviceInfo.processApis(); err != nil {
return nil, err
}
if err := serviceInfo.processQuota(); err != nil {
return nil, err
}
if err := serviceInfo.processBackendRule(); err != nil {
return nil, err
}
if err := serviceInfo.processHttpRule(); err != nil {
return nil, err
}
if err := serviceInfo.processUsageRule(); err != nil {
return nil, err
}
serviceInfo.processAccessToken()
if err := serviceInfo.processTypes(); err != nil {
return nil, err
}
if err := serviceInfo.addGrpcHttpRules(); err != nil {
return nil, err
}
if err := serviceInfo.processTranscodingIgnoredQueryParams(); err != nil {
return nil, err
}
if err := serviceInfo.processApiKeyLocations(); err != nil {
return nil, err
}
if err := serviceInfo.processEmptyJwksUriByOpenID(); err != nil {
return nil, err
}
if err := serviceInfo.processLocalBackendOperations(); err != nil {
return nil, err
}
if err := serviceInfo.processAllBackends(); err != nil {
return nil, err
}
if err := serviceInfo.processAuthRequirement(); err != nil {
return nil, err
}
if err := serviceInfo.processServiceControlURL(); err != nil {
return nil, err
}
return serviceInfo, nil
}