Documentation ¶
Overview ¶
Package profile defines a qri peer profile
Index ¶
- Variables
- type Author
- type ID
- type LocalStore
- func (r *LocalStore) Active(ctx context.Context) *Profile
- func (r *LocalStore) DeleteProfile(id ID) error
- func (r *LocalStore) GetProfile(id ID) (*Profile, error)
- func (r *LocalStore) List() (map[ID]*Profile, error)
- func (r *LocalStore) Owner() *Profile
- func (r *LocalStore) PeerIDs(id ID) ([]peer.ID, error)
- func (r *LocalStore) PeerProfile(id peer.ID) (*Profile, error)
- func (r *LocalStore) PeernameID(peername string) (ID, error)
- func (r *LocalStore) ProfilesForUsername(username string) ([]*Profile, error)
- func (r *LocalStore) PutProfile(p *Profile) error
- func (r *LocalStore) SetOwner(own *Profile) error
- type MemStore
- func (m *MemStore) Active(ctx context.Context) *Profile
- func (m *MemStore) DeleteProfile(id ID) error
- func (m *MemStore) GetProfile(id ID) (*Profile, error)
- func (m *MemStore) List() (map[ID]*Profile, error)
- func (m *MemStore) Owner() *Profile
- func (m *MemStore) PeerIDs(id ID) ([]peer.ID, error)
- func (m *MemStore) PeerProfile(id peer.ID) (*Profile, error)
- func (m *MemStore) PeernameID(peername string) (ID, error)
- func (m *MemStore) ProfilesForUsername(username string) ([]*Profile, error)
- func (m *MemStore) PutProfile(p *Profile) error
- func (m *MemStore) SetOwner(own *Profile) error
- type Profile
- type Store
- type Type
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotFound is the not found err for the profile package ErrNotFound = fmt.Errorf("profile: not found") // ErrAmbiguousUsername occurs when more than one username is the same in a // context that requires exactly one user. More information is needed to // disambiguate which username is correct ErrAmbiguousUsername = fmt.Errorf("ambiguous username") )
Functions ¶
This section is empty.
Types ¶
type Author ¶
Author uses keypair cryptography to distinguish between different log sources (authors)
Deprecated - don't rely on this interface, refactor to use profile.Profiles and public keys instead
type ID ¶
ID is a distinct thing form a peer.ID. They are *NOT* meant to be interchangable but the mechanics of peer.ID & profile.ID are exactly the same
func IDB58Decode ¶
IDB58Decode proxies a lower level API b/c I'm lazy & don't like
func IDB58DecodeOrEmpty ¶
IDB58DecodeOrEmpty decodes an ID, or returns an empty ID if decoding fails
func IDB58MustDecode ¶
IDB58MustDecode panics if an ID doesn't decode. useful for testing
func IDFromPeerID ¶
IDFromPeerID type casts a peer.ID from ipfs into an ID
func IDRawByteString ¶
IDRawByteString constructs an ID from a raw byte string. No decoding happens. Should only be used in tests
func (ID) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface for ID
func (*ID) MarshalYAML ¶
MarshalYAML implements the yaml.Marshaler interface for ID
func (*ID) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface for ID
func (*ID) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface for ID
type LocalStore ¶
LocalStore is an on-disk json file implementation of the repo.Peers interface
func (*LocalStore) Active ¶
func (r *LocalStore) Active(ctx context.Context) *Profile
Active is the curernt active profile
func (*LocalStore) DeleteProfile ¶
func (r *LocalStore) DeleteProfile(id ID) error
DeleteProfile removes a profile from the store
func (*LocalStore) GetProfile ¶
func (r *LocalStore) GetProfile(id ID) (*Profile, error)
GetProfile fetches a profile from the store
func (*LocalStore) List ¶
func (r *LocalStore) List() (map[ID]*Profile, error)
List hands back the list of peers
func (*LocalStore) Owner ¶
func (r *LocalStore) Owner() *Profile
Owner accesses the current owner user profile
func (*LocalStore) PeerIDs ¶
func (r *LocalStore) PeerIDs(id ID) ([]peer.ID, error)
PeerIDs gives the peer.IDs list for a given peername
func (*LocalStore) PeerProfile ¶
func (r *LocalStore) PeerProfile(id peer.ID) (*Profile, error)
PeerProfile gives the profile that corresponds with a given peer.ID
func (*LocalStore) PeernameID ¶
func (r *LocalStore) PeernameID(peername string) (ID, error)
PeernameID gives the ID for a given peername
func (*LocalStore) ProfilesForUsername ¶
func (r *LocalStore) ProfilesForUsername(username string) ([]*Profile, error)
ProfilesForUsername fetches all profile that match a username (Peername)
func (*LocalStore) PutProfile ¶
func (r *LocalStore) PutProfile(p *Profile) error
PutProfile adds a peer to the store
func (*LocalStore) SetOwner ¶
func (r *LocalStore) SetOwner(own *Profile) error
SetOwner updates the owner profile
type MemStore ¶
MemStore is an in-memory implementation of the profile Store interface
func (*MemStore) DeleteProfile ¶
DeleteProfile removes a peer from this store
func (*MemStore) GetProfile ¶
GetProfile give's peer info from the store for a given peer.ID
func (*MemStore) PeerProfile ¶
PeerProfile returns profile data for a given peer.ID TODO - this func implies that peer.ID's are only ever connected to the same profile. That could cause trouble.
func (*MemStore) PeernameID ¶
PeernameID gives the ID for a given peername
func (*MemStore) ProfilesForUsername ¶
ProfilesForUsername fetches all profile that match a username (Peername)
func (*MemStore) PutProfile ¶
PutProfile adds a peer to this store
type Profile ¶
type Profile struct { // All Profiles are built on public key infrastructure // PrivKey is the peer's private key, should only be present for the current peer PrivKey crypto.PrivKey `json:"_,omitempty"` // PubKey is the peer's public key PubKey crypto.PubKey `json:"key,omitempty"` // KeyID is the key identifier used for the keystore KeyID key.ID `json:"key_id,omitempty"` ID ID `json:"id"` // Created timestamp Created time.Time `json:"created,omitempty"` // Updated timestamp Updated time.Time `json:"updated,omitempty"` // Peername a handle for the user. min 1 character, max 80. composed of [_,-,a-z,A-Z,1-9] Peername string `json:"peername"` // specifies weather this is a user or an organization Type Type `json:"type"` // user's email address Email string `json:"email"` // user name field. could be first[space]last, but not strictly enforced Name string `json:"name"` // user-filled description of self Description string `json:"description"` // url this user wants the world to click HomeURL string `json:"homeUrl"` // color this user likes to use as their theme color Color string `json:"color"` // Thumb path for user's thumbnail Thumb string `json:"thumb"` // Profile photo Photo string `json:"photo"` // Poster photo for users's profile page Poster string `json:"poster"` // Twitter is a peer's twitter handle Twitter string `json:"twitter"` // Online indicates if this peer is currently connected to the network Online bool `json:"online,omitempty"` // PeerIDs lists any network PeerIDs associated with this profile // in the form /network/peerID PeerIDs []peer.ID `json:"peerIDs"` // NetworkAddrs keeps a list of locations for this profile on the network as multiaddr strings NetworkAddrs []ma.Multiaddr `json:"networkAddrs,omitempty"` }
Profile defines peer profile details
func NewProfile ¶
func NewProfile(p *config.ProfilePod) (pro *Profile, err error)
NewProfile allocates a profile from a CodingProfile
func ResolveUsername ¶
ResolveUsername finds a single profile for a given username from a store of usernames. Errors if the store contains more than one user with the given username
func (*Profile) Decode ¶
func (p *Profile) Decode(sp *config.ProfilePod) error
Decode turns a ProfilePod into a profile.Profile
func (Profile) Encode ¶
func (p Profile) Encode() (*config.ProfilePod, error)
Encode returns a ProfilePod for a given profile
func (*Profile) GetKeyID ¶
GetKeyID returns a KeyID assigned to the profile or falls back to the profile ID if none is present
func (*Profile) ValidOwnerProfile ¶
ValidOwnerProfile checks if a profile can be used as an owner profile
type Store ¶
type Store interface { // Owner is a single profile that represents the current user Owner() *Profile // SetOwner handles updates to the current user profile at runtime SetOwner(own *Profile) error // Active is the active profile that represents the current user Active(ctx context.Context) *Profile // put a profile in the store PutProfile(profile *Profile) error // get a profile by ID GetProfile(id ID) (*Profile, error) // remove a profile from the store DeleteProfile(id ID) error // get all profiles who's .Peername field matches a given username. It's // possible to have multiple profiles with the same username ProfilesForUsername(username string) ([]*Profile, error) // list all profiles in the store, keyed by ID // Deprecated - don't add new callers to this. We should replace this with // a better batch accessor List() (map[ID]*Profile, error) // get a set of peer ids for a given profile ID PeerIDs(id ID) ([]peer.ID, error) // get a profile for a given peer Identifier PeerProfile(id peer.ID) (*Profile, error) // get the profile ID for a given peername // Depcreated - use GetProfile instead PeernameID(peername string) (ID, error) }
Store is a store of profile information. Stores are owned by a single profile that must have an associated private key
func NewLocalStore ¶
NewLocalStore allocates a LocalStore
func NewMemStore ¶
NewMemStore allocates a MemStore
type Type ¶
type Type int
Type enumerates different types of peers
func (Type) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface for Type
func (*Type) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface for Type