MCPcopy Create free account
hub / github.com/ContentSquare/chproxy / newUser

Method newUser

scope.go:583–639  ·  view source on GitHub ↗
(u config.User)

Source from the content-addressed store, hash-verified

581}
582
583func (up usersProfile) newUser(u config.User) (*user, error) {
584 c, ok := up.clusters[u.ToCluster]
585 if !ok {
586 return nil, fmt.Errorf("unknown `to_cluster` %q", u.ToCluster)
587 }
588 var cu *clusterUser
589 if cu, ok = c.users[u.ToUser]; !ok {
590 return nil, fmt.Errorf("unknown `to_user` %q in cluster %q", u.ToUser, u.ToCluster)
591 } else if u.IsWildcarded {
592 // a wildcarded user is mapped to this cluster user
593 // used to check if a proper user to send heartbeat exists
594 cu.isWildcarded = true
595 }
596
597 var queueCh chan struct{}
598 if u.MaxQueueSize > 0 {
599 queueCh = make(chan struct{}, u.MaxQueueSize)
600 }
601
602 var cc *cache.AsyncCache
603 if len(u.Cache) > 0 {
604 cc = up.caches[u.Cache]
605 if cc == nil {
606 return nil, fmt.Errorf("unknown `cache` %q", u.Cache)
607 }
608 }
609
610 var params *paramsRegistry
611 if len(u.Params) > 0 {
612 params = up.params[u.Params]
613 if params == nil {
614 return nil, fmt.Errorf("unknown `params` %q", u.Params)
615 }
616 }
617
618 return &user{
619 name: u.Name,
620 password: u.Password,
621 toCluster: u.ToCluster,
622 toUser: u.ToUser,
623 maxConcurrentQueries: u.MaxConcurrentQueries,
624 maxExecutionTime: time.Duration(u.MaxExecutionTime),
625 reqPerMin: u.ReqPerMin,
626 queueCh: queueCh,
627 maxQueueTime: time.Duration(u.MaxQueueTime),
628 reqPacketSizeTokenLimiter: rate.NewLimiter(rate.Limit(u.ReqPacketSizeTokensRate), int(u.ReqPacketSizeTokensBurst)),
629 reqPacketSizeTokensBurst: u.ReqPacketSizeTokensBurst,
630 reqPacketSizeTokensRate: u.ReqPacketSizeTokensRate,
631 allowedNetworks: u.AllowedNetworks,
632 denyHTTP: u.DenyHTTP,
633 denyHTTPS: u.DenyHTTPS,
634 allowCORS: u.AllowCORS,
635 isWildcarded: u.IsWildcarded,
636 cache: cc,
637 params: params,
638 }, nil
639}
640

Callers 1

newUsersMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected