func newFromConfig(ld blobserver.Loader, cfg jsonconfig.Obj) (http.Handler, error) { h := &Host{ baseURL: ld.BaseURL(), importerBase: ld.BaseURL() + ld.MyPrefix(), imp: make(map[string]*importer), } for k, impl := range importers { h.importers = append(h.importers, k) var clientID, clientSecret string if impConf := cfg.OptionalObject(k); impConf != nil { clientID = impConf.OptionalString("clientID", "") clientSecret = impConf.OptionalString("clientSecret", "") // Special case: allow clientSecret to be of form "clientID:clientSecret" // if the clientID is empty. if clientID == "" && strings.Contains(clientSecret, ":") { if f := strings.SplitN(clientSecret, ":", 2); len(f) == 2 { clientID, clientSecret = f[0], f[1] } } if err := impConf.Validate(); err != nil { return nil, fmt.Errorf("Invalid static configuration for importer %q: %v", k, err) } } if clientSecret != "" && clientID == "" { return nil, fmt.Errorf("Invalid static configuration for importer %q: clientSecret specified without clientID", k) } imp := &importer{ host: h, name: k, impl: impl, clientID: clientID, clientSecret: clientSecret, } h.imp[k] = imp } if err := cfg.Validate(); err != nil { return nil, err } sort.Strings(h.importers) return h, nil }
func newFromConfig(ld blobserver.Loader, cfg jsonconfig.Obj) (http.Handler, error) { hc := HostConfig{ BaseURL: ld.BaseURL(), Prefix: ld.MyPrefix(), } ClientId := make(map[string]string) ClientSecret := make(map[string]string) for k, _ := range importers { var clientId, clientSecret string if impConf := cfg.OptionalObject(k); impConf != nil { clientId = impConf.OptionalString("clientID", "") clientSecret = impConf.OptionalString("clientSecret", "") // Special case: allow clientSecret to be of form "clientId:clientSecret" // if the clientId is empty. if clientId == "" && strings.Contains(clientSecret, ":") { if f := strings.SplitN(clientSecret, ":", 2); len(f) == 2 { clientId, clientSecret = f[0], f[1] } } if err := impConf.Validate(); err != nil { return nil, fmt.Errorf("Invalid static configuration for importer %q: %v", k, err) } ClientId[k] = clientId ClientSecret[k] = clientSecret } } if err := cfg.Validate(); err != nil { return nil, err } hc.ClientId = ClientId hc.ClientSecret = ClientSecret host, err := NewHost(hc) if err != nil { return nil, err } host.didInit.Add(1) return host, nil }