qri: github.com/qri-io/qri/repo/profile Index | Files

package profile

import "github.com/qri-io/qri/repo/profile"

Package profile defines a qri peer profile

Index

Package Files

id.go profile.go store.go type.go

Variables

var ErrNotFound = fmt.Errorf("profile: not found")

ErrNotFound is the not found err for the profile package

type ID Uses

type ID peer.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 Uses

func IDB58Decode(proid string) (ID, error)

IDB58Decode proxies a lower level API b/c I'm lazy & don't like

func IDB58MustDecode Uses

func IDB58MustDecode(proid string) ID

IDB58MustDecode panics if an ID doesn't decode. useful for testing

func NewB58ID Uses

func NewB58ID(pid string) (ID, error)

NewB58ID creates a peer.ID from a base58-encoded string

func (ID) MarshalJSON Uses

func (id ID) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for ID

func (*ID) MarshalYAML Uses

func (id *ID) MarshalYAML() (interface{}, error)

MarshalYAML implements the yaml.Marshaler interface for ID

func (ID) String Uses

func (id ID) String() string

String implements the stringer interface for ID

func (*ID) UnmarshalJSON Uses

func (id *ID) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON implements the json.Unmarshaler interface for ID

func (*ID) UnmarshalYAML Uses

func (id *ID) UnmarshalYAML(unmarshal func(interface{}) error) (err error)

UnmarshalYAML implements the yaml.Unmarshaler interface for ID

type MemStore Uses

type MemStore struct {
    sync.Mutex
    // contains filtered or unexported fields
}

MemStore is an in-memory implementation of the profile Store interface

func (*MemStore) DeleteProfile Uses

func (m *MemStore) DeleteProfile(id ID) error

DeleteProfile removes a peer from this store

func (*MemStore) GetProfile Uses

func (m *MemStore) GetProfile(id ID) (*Profile, error)

GetProfile give's peer info from the store for a given peer.ID

func (*MemStore) List Uses

func (m *MemStore) List() (map[ID]*Profile, error)

List hands the full list of peers back

func (*MemStore) PeerIDs Uses

func (m *MemStore) PeerIDs(id ID) ([]peer.ID, error)

PeerIDs gives the peer.IDs list for a given peername

func (*MemStore) PeerProfile Uses

func (m *MemStore) PeerProfile(id peer.ID) (*Profile, error)

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 Uses

func (m *MemStore) PeernameID(peername string) (ID, error)

PeernameID gives the ID for a given peername

func (*MemStore) PutProfile Uses

func (m *MemStore) PutProfile(profile *Profile) error

PutProfile adds a peer to this store

type Profile Uses

type Profile struct {
    ID  ID  `json:"id"`
    // Created timestamp
    Created time.Time `json:"created,omitempty"`
    // Updated timestamp
    Updated time.Time `json:"updated,omitempty"`
    // PrivKey is the peer's private key, should only be present for the current peer
    PrivKey crypto.PrivKey `json:"_,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 Uses

func NewProfile(p *config.ProfilePod) (pro *Profile, err error)

NewProfile allocates a profile from a CodingProfile

func (*Profile) Decode Uses

func (p *Profile) Decode(sp *config.ProfilePod) error

Decode turns a ProfilePod into a profile.Profile

func (Profile) Encode Uses

func (p Profile) Encode() (*config.ProfilePod, error)

Encode returns a ProfilePod for a given profile

type Store Uses

type Store interface {
    List() (map[ID]*Profile, error)
    PeerIDs(id ID) ([]peer.ID, error)
    PeernameID(peername string) (ID, error)
    PutProfile(profile *Profile) error
    GetProfile(id ID) (*Profile, error)
    PeerProfile(id peer.ID) (*Profile, error)
    DeleteProfile(id ID) error
}

Store is a store of profile information

func NewMemStore Uses

func NewMemStore() Store

NewMemStore allocates a MemStore

type Type Uses

type Type int

Type enumerates different types of peers

const (
    // TypePeer is a single person
    TypePeer Type = iota
    // TypeOrganization represents a group of people
    TypeOrganization
)

func ParseType Uses

func ParseType(t string) (Type, error)

ParseType decodes a peer type from a string

func (Type) MarshalJSON Uses

func (t Type) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Type

func (Type) String Uses

func (t Type) String() string

String implements the Stringer interface for Type

func (*Type) UnmarshalJSON Uses

func (t *Type) UnmarshalJSON(data []byte) (err error)

UnmarshalJSON implements the json.Unmarshaler interface for Type

Package profile imports 10 packages (graph) and is imported by 9 packages. Updated 2019-07-05. Refresh now. Tools for package owners.