本文整理匯總了Golang中camlistore/org/pkg/types/camtypes.ClaimsByDate函數的典型用法代碼示例。如果您正苦於以下問題:Golang ClaimsByDate函數的具體用法?Golang ClaimsByDate怎麽用?Golang ClaimsByDate使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ClaimsByDate函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: GetClaims
// GetClaims returns the claims on req.Permanode signed by sh.owner.
func (sh *Handler) GetClaims(req *ClaimsRequest) (*ClaimsResponse, error) {
if !req.Permanode.Valid() {
return nil, errors.New("Error getting claims: nil permanode.")
}
var claims []camtypes.Claim
claims, err := sh.index.AppendClaims(claims, req.Permanode, sh.owner, req.AttrFilter)
if err != nil {
return nil, fmt.Errorf("Error getting claims of %s: %v", req.Permanode.String(), err)
}
sort.Sort(camtypes.ClaimsByDate(claims))
var jclaims []*ClaimsItem
for _, claim := range claims {
jclaim := &ClaimsItem{
BlobRef: claim.BlobRef,
Signer: claim.Signer,
Permanode: claim.Permanode,
Date: types.Time3339(claim.Date),
Type: claim.Type,
Attr: claim.Attr,
Value: claim.Value,
}
jclaims = append(jclaims, jclaim)
}
res := &ClaimsResponse{
Claims: jclaims,
}
return res, nil
}
示例2: populatePermanodeFields
func (dr *DescribeRequest) populatePermanodeFields(pi *DescribedPermanode, pn, signer blob.Ref, depth int) {
pi.Attr = make(url.Values)
attr := pi.Attr
claims, err := dr.sh.index.AppendClaims(nil, pn, signer, "")
if err != nil {
log.Printf("Error getting claims of %s: %v", pn.String(), err)
dr.addError(pn, fmt.Errorf("Error getting claims of %s: %v", pn.String(), err))
return
}
sort.Sort(camtypes.ClaimsByDate(claims))
claimLoop:
for _, cl := range claims {
if !dr.At.IsZero() {
if cl.Date.After(dr.At.Time()) {
continue
}
}
switch cl.Type {
default:
continue
case "del-attribute":
if cl.Value == "" {
delete(attr, cl.Attr)
} else {
sl := attr[cl.Attr]
filtered := make([]string, 0, len(sl))
for _, val := range sl {
if val != cl.Value {
filtered = append(filtered, val)
}
}
attr[cl.Attr] = filtered
}
case "set-attribute":
delete(attr, cl.Attr)
fallthrough
case "add-attribute":
if cl.Value == "" {
continue
}
sl, ok := attr[cl.Attr]
if ok {
for _, exist := range sl {
if exist == cl.Value {
continue claimLoop
}
}
} else {
sl = make([]string, 0, 1)
attr[cl.Attr] = sl
}
attr[cl.Attr] = append(sl, cl.Value)
}
pi.ModTime = cl.Date
}
// Descend into any references in current attributes.
for key, vals := range attr {
dr.describeRefs(key, depth)
for _, v := range vals {
dr.describeRefs(v, depth)
}
}
}
示例3: populatePermanodeFields
func (dr *DescribeRequest) populatePermanodeFields(pi *DescribedPermanode, pn, signer blob.Ref, depth int) {
pi.Attr = make(url.Values)
attr := pi.Attr
claims, err := dr.sh.index.AppendClaims(nil, pn, signer, "")
if err != nil {
log.Printf("Error getting claims of %s: %v", pn.String(), err)
dr.addError(pn, fmt.Errorf("Error getting claims of %s: %v", pn.String(), err))
return
}
sort.Sort(camtypes.ClaimsByDate(claims))
claimLoop:
for _, cl := range claims {
switch cl.Type {
default:
continue
case "del-attribute":
if cl.Value == "" {
delete(attr, cl.Attr)
} else {
sl := attr[cl.Attr]
filtered := make([]string, 0, len(sl))
for _, val := range sl {
if val != cl.Value {
filtered = append(filtered, val)
}
}
attr[cl.Attr] = filtered
}
case "set-attribute":
delete(attr, cl.Attr)
fallthrough
case "add-attribute":
if cl.Value == "" {
continue
}
sl, ok := attr[cl.Attr]
if ok {
for _, exist := range sl {
if exist == cl.Value {
continue claimLoop
}
}
} else {
sl = make([]string, 0, 1)
attr[cl.Attr] = sl
}
attr[cl.Attr] = append(sl, cl.Value)
}
pi.ModTime = cl.Date
}
// If the content permanode is now known, look up its type
if content, ok := attr["camliContent"]; ok && len(content) > 0 {
if cbr, ok := blob.Parse(content[len(content)-1]); ok {
dr.Describe(cbr, depth-1)
}
}
// Resolve children
if members, ok := attr["camliMember"]; ok {
for _, member := range members {
if membr, ok := blob.Parse(member); ok {
dr.Describe(membr, depth-1)
}
}
}
// Resolve path elements
for k, vv := range attr {
if !strings.HasPrefix(k, "camliPath:") {
continue
}
for _, brs := range vv {
if br, ok := blob.Parse(brs); ok {
dr.Describe(br, depth-1)
}
}
}
}