(ctx context.Context, req types.VerifyRequest, p types.Pointer)
| 403 | } |
| 404 | |
| 405 | func (c *GitHTTPComponent) LfsVerify(ctx context.Context, req types.VerifyRequest, p types.Pointer) error { |
| 406 | repo, err := c.repo.FindByPath(ctx, req.RepoType, req.Namespace, req.Name) |
| 407 | if err != nil { |
| 408 | return fmt.Errorf("failed to find repo, error: %w", err) |
| 409 | } |
| 410 | |
| 411 | // _, err = c.lfsMetaObjectStore.FindByOID(ctx, repo.ID, p.Oid) |
| 412 | // if err != nil { |
| 413 | // return fmt.Errorf("failed to find lfs meta object, error: %w", err) |
| 414 | // } |
| 415 | objectKey := path.Join("lfs", p.RelativePath()) |
| 416 | fileInfo, err := c.s3Client.StatObject(ctx, c.config.S3.Bucket, objectKey, minio.StatObjectOptions{}) |
| 417 | if err != nil { |
| 418 | slog.Error("failed to stat object in s3", slog.Any("error", err)) |
| 419 | return fmt.Errorf("failed to stat object in s3, error: %w", err) |
| 420 | } |
| 421 | |
| 422 | if fileInfo.Size != p.Size { |
| 423 | return types.ErrSizeMismatch |
| 424 | } |
| 425 | |
| 426 | _, err = c.lfsMetaObjectStore.Create(ctx, database.LfsMetaObject{ |
| 427 | Oid: p.Oid, |
| 428 | Size: p.Size, |
| 429 | RepositoryID: repo.ID, |
| 430 | Existing: true, |
| 431 | }) |
| 432 | if err != nil { |
| 433 | return fmt.Errorf("failed to create lfs meta object in database: %w", err) |
| 434 | } |
| 435 | |
| 436 | return nil |
| 437 | } |
| 438 | |
| 439 | func (c *GitHTTPComponent) CreateLock(ctx context.Context, req types.LfsLockReq) (*database.LfsLock, error) { |
| 440 | var ( |
nothing calls this directly
no test coverage detected