code: func (d *DNSProvider) login() error {
  	queryArgs := map[string]string{
  		"username": d.config.UserName,
  		"password": d.config.Password,
  	}
  
  	resp, err := d.sendRequest(http.MethodGet, "login", nil, queryArgs)
  	if err != nil {
  		return err
  	}
  	defer resp.Body.Close()
  
  	authBytes, err := ioutil.ReadAll(resp.Body)
  	if err != nil {
  		return fmt.Errorf("bluecat: %v", err)
  	}
  	authResp := string(authBytes)
  
  	if strings.Contains(authResp, "Authentication Error") {
  		msg := strings.Trim(authResp, "\"")
  		return fmt.Errorf("bluecat: request failed: %s", msg)
  	}
  
  	// Upon success, API responds with "Session Token-> BAMAuthToken: dQfuRMTUxNjc3MjcyNDg1ODppcGFybXM= <- for User : username"
  	d.token = regexp.MustCompile("BAMAuthToken: [^ ]+").FindString(authResp)
  	return nil
  }
docs: // Starts a new Bluecat API Session. Authenticates using customerName, userName,
  // password and receives a token to be used in for subsequent requests.