(u *url.URL)
| 397 | } |
| 398 | |
| 399 | func setupFailoverConn(u *url.URL) (*FailoverOptions, error) { |
| 400 | o := &FailoverOptions{} |
| 401 | |
| 402 | o.SentinelUsername, o.SentinelPassword = getUserPassword(u) |
| 403 | |
| 404 | h, p := getHostPortWithDefaults(u) |
| 405 | o.SentinelAddrs = append(o.SentinelAddrs, net.JoinHostPort(h, p)) |
| 406 | |
| 407 | switch u.Scheme { |
| 408 | case "rediss": |
| 409 | o.TLSConfig = &tls.Config{ServerName: h, MinVersion: tls.VersionTLS12} |
| 410 | case "redis": |
| 411 | o.TLSConfig = nil |
| 412 | default: |
| 413 | return nil, fmt.Errorf("redis: invalid URL scheme: %s", u.Scheme) |
| 414 | } |
| 415 | |
| 416 | f := strings.FieldsFunc(u.Path, func(r rune) bool { |
| 417 | return r == '/' |
| 418 | }) |
| 419 | switch len(f) { |
| 420 | case 0: |
| 421 | o.DB = 0 |
| 422 | case 1: |
| 423 | var err error |
| 424 | if o.DB, err = strconv.Atoi(f[0]); err != nil { |
| 425 | return nil, fmt.Errorf("redis: invalid database number: %q", f[0]) |
| 426 | } |
| 427 | default: |
| 428 | return nil, fmt.Errorf("redis: invalid URL path: %s", u.Path) |
| 429 | } |
| 430 | |
| 431 | return setupFailoverConnParams(u, o) |
| 432 | } |
| 433 | |
| 434 | func setupFailoverConnParams(u *url.URL, o *FailoverOptions) (*FailoverOptions, error) { |
| 435 | q := queryOptions{q: u.Query()} |
no test coverage detected