MCPcopy Create free account
hub / github.com/encoder-run/operator / jsonToReference

Function jsonToReference

pkg/cache/redis/reference.go:246–283  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

244}
245
246func jsonToReference(data []byte) (*plumbing.Reference, error) {
247 var refMap map[string]interface{}
248 if err := json.Unmarshal(data, &refMap); err != nil {
249 return nil, err
250 }
251
252 name, ok := refMap["Name"].(string)
253 if !ok {
254 return nil, fmt.Errorf("invalid reference name")
255 }
256
257 target, ok := refMap["Target"].(string)
258 if !ok {
259 return nil, fmt.Errorf("invalid reference target")
260 }
261
262 refType, ok := refMap["Type"].(string)
263 if !ok {
264 return nil, fmt.Errorf("invalid reference type")
265 }
266
267 hash, ok := refMap["Hash"].(string)
268 if refType == plumbing.HashReference.String() && !ok {
269 return nil, fmt.Errorf("invalid reference hash")
270 }
271
272 var ref plumbing.Reference
273 switch refType {
274 case plumbing.SymbolicReference.String():
275 ref = *plumbing.NewSymbolicReference(plumbing.ReferenceName(name), plumbing.ReferenceName(target))
276 case plumbing.HashReference.String():
277 ref = *plumbing.NewHashReference(plumbing.ReferenceName(name), plumbing.NewHash(hash))
278 default:
279 return nil, fmt.Errorf("unsupported reference type")
280 }
281
282 return &ref, nil
283}

Callers 3

ReferenceMethod · 0.85
CheckAndSetReferenceMethod · 0.85
NextMethod · 0.85

Calls 1

StringMethod · 0.45

Tested by

no test coverage detected