MCPcopy
hub / github.com/git-lfs/git-lfs / decodeKV

Function decodeKV

lfs/pointer.go:168–213  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

166}
167
168func decodeKV(data []byte) (*Pointer, error) {
169 kvps, exts, err := decodeKVData(data)
170 if err != nil {
171 if errors.IsBadPointerKeyError(err) {
172 return nil, errors.StandardizeBadPointerError(err)
173 }
174 return nil, err
175 }
176
177 if err := verifyVersion(kvps["version"]); err != nil {
178 return nil, err
179 }
180
181 value, ok := kvps["oid"]
182 if !ok {
183 return nil, errors.New(tr.Tr.Get("Invalid OID"))
184 }
185
186 oid, err := parseOid(value)
187 if err != nil {
188 return nil, err
189 }
190
191 value, ok = kvps["size"]
192 size, err := strconv.ParseInt(value, 10, 64)
193 if err != nil || size < 0 {
194 return nil, errors.New(tr.Tr.Get("invalid size: %q", value))
195 }
196
197 var extensions []*PointerExtension
198 if exts != nil {
199 for key, value := range exts {
200 ext, err := parsePointerExtension(key, value)
201 if err != nil {
202 return nil, err
203 }
204 extensions = append(extensions, ext)
205 }
206 if err = validatePointerExtensions(extensions); err != nil {
207 return nil, err
208 }
209 sort.Sort(ByPriority(extensions))
210 }
211
212 return NewPointer(oid, size, extensions), nil
213}
214
215func parseOid(value string) (string, error) {
216 parts := strings.SplitN(value, ":", 2)

Callers 1

DecodeFromFunction · 0.85

Calls 11

IsBadPointerKeyErrorFunction · 0.92
NewFunction · 0.92
decodeKVDataFunction · 0.85
verifyVersionFunction · 0.85
parseOidFunction · 0.85
parsePointerExtensionFunction · 0.85
ByPriorityTypeAlias · 0.85
NewPointerFunction · 0.85
GetMethod · 0.65

Tested by

no test coverage detected