blob: a7978a7af32a2470fb8cdafd86550be31e51d616 [file] [log] [blame]
// Copyright 2016 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package syncbase
import (
"fmt"
"strings"
)
// Note that "," is not allowed to appear in blessing patterns. We also
// could've used "/" as a separator, but then we would've had to be more
// careful with decoding and splitting name components elsewhere. However,
// "," is allowed to appear in id names.
// TODO(sadovsky): Maybe define "," constant in v23/services/syncbase.
// String implements Stringer.
func (id Id) String() string {
return id.Blessing + "," + id.Name
}
// ParseId parses an Id from a string formatted according to the String method.
func ParseId(from string) (Id, error) {
// SplitN must be used because "," is allowed to appear in id names.
parts := strings.SplitN(from, ",", 2)
if len(parts) != 2 {
return Id{}, fmt.Errorf("failed to parse id: %s", from)
}
return Id{Blessing: parts[0], Name: parts[1]}, nil
}