func NewServiceInfoFromServiceConfig()

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
}