MCPcopy
hub / github.com/perkeep/perkeep / ReceiveBlob

Method ReceiveBlob

pkg/blobserver/mongo/receive.go:34–51  ·  view source on GitHub ↗
(ctx context.Context, ref blob.Ref, source io.Reader)

Source from the content-addressed store, hash-verified

32)
33
34func (m *mongoStorage) ReceiveBlob(ctx context.Context, ref blob.Ref, source io.Reader) (blob.SizedRef, error) {
35 blobData, err := io.ReadAll(source)
36 if err != nil {
37 return blob.SizedRef{}, err
38 }
39
40 b := blobDoc{Key: ref.String(), Blob: blobData, Size: uint32(len(blobData))}
41
42 if err = m.c.Insert(b); err != nil {
43 // Unique key violation?
44 // Then the blob already exists, no need to throw an error
45 if mongoErr, isMongoErr := err.(*mgo.LastError); isMongoErr && mongoErr.Code == mgoUniqueKeyErr {
46 return blob.SizedRef{Ref: ref, Size: b.Size}, nil
47 }
48 return blob.SizedRef{}, err
49 }
50 return blob.SizedRef{Ref: ref, Size: b.Size}, nil
51}

Callers

nothing calls this directly

Calls 2

ReadAllMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected