Skip to content

Commit 43b733e

Browse files
authored
Merge pull request #29 from filecoin-project/feat/latest-object
feat: create latest object for static lookup
2 parents 562b21f + 389c63a commit 43b733e

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

cmd/filecoin-chain-archiver/cmds/create.go

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,12 @@ var cmdCreate = &cli.Command{
333333

334334
logger.Infow("object", "name", name)
335335

336-
info, err := minioClient.PutObject(ctx, flagBucket, fmt.Sprintf("%s%s.car", flagNamePrefix, name), tr, -1, minio.PutObjectOptions{})
336+
info, err := minioClient.PutObject(ctx, flagBucket, fmt.Sprintf("%s%s.car", flagNamePrefix, name), tr, -1, minio.PutObjectOptions{
337+
ContentDisposition: fmt.Sprintf("attachment; filename=\"%s.car\"", name),
338+
ContentType: "application/octet-stream",
339+
})
337340
if err != nil {
338-
return err
341+
return fmt.Errorf("failed to upload", "object", fmt.Sprintf("%s%s.car", flagNamePrefix, name), "err", err)
339342
}
340343

341344
logger.Infow("upload",
@@ -349,12 +352,40 @@ var cmdCreate = &cli.Command{
349352
"expiration_rule_id", info.ExpirationRuleID,
350353
)
351354

352-
sha256sum := fmt.Sprintf("%x *%s.car", h.Sum(nil), name)
355+
latestLocation, err := url.QueryUnescape(info.Location)
356+
if err != nil {
357+
logger.Errorw("failed to decode location url", "location", info.Location, "err", err)
358+
latestLocation = info.Location
359+
}
360+
361+
sha256sum := fmt.Sprintf("%x *%s.car\n", h.Sum(nil), name)
353362

354-
info, err = minioClient.PutObject(ctx, flagBucket, fmt.Sprintf("%s%s.sha256sum", flagNamePrefix, name), strings.NewReader(sha256sum), -1, minio.PutObjectOptions{})
363+
info, err = minioClient.PutObject(ctx, flagBucket, fmt.Sprintf("%s%s.sha256sum", flagNamePrefix, name), strings.NewReader(sha256sum), -1, minio.PutObjectOptions{
364+
ContentDisposition: fmt.Sprintf("attachment; filename=\"%s.sha256sum\"", name),
365+
ContentType: "text/plain",
366+
})
355367
if err != nil {
356-
logger.Errorw("failed to write sha256sum", "object", info.Key, "err", err)
368+
logger.Errorw("failed to write sha256sum", "object", fmt.Sprintf("%s%s.sha256sum", flagNamePrefix, name), "err", err)
357369
}
370+
371+
info, err = minioClient.PutObject(ctx, flagBucket, fmt.Sprintf("%slatest", flagNamePrefix), strings.NewReader(latestLocation), -1, minio.PutObjectOptions{
372+
WebsiteRedirectLocation: latestLocation,
373+
ContentType: "text/plain",
374+
})
375+
if err != nil {
376+
return fmt.Errorf("failed to write latest", "object", fmt.Sprintf("%slatest", flagNamePrefix), "err", err)
377+
}
378+
379+
logger.Infow("upload",
380+
"bucket", info.Bucket,
381+
"key", info.Key,
382+
"etag", info.ETag,
383+
"size", info.Size,
384+
"location", info.Location,
385+
"version_id", info.VersionID,
386+
"expiration", info.Expiration,
387+
"expiration_rule_id", info.ExpirationRuleID,
388+
)
358389
}
359390

360391
if err := <-errCh; err != nil {

0 commit comments

Comments
 (0)