upload

package
v0.1.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 15, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Cmd = &cobra.Command{
	Use:   "upload",
	Short: "Upload a file and register/update its DRS record",
	RunE: func(cmd *cobra.Command, args []string) error {
		ctx := cmd.Context()
		if strings.TrimSpace(uploadFile) == "" {
			return fmt.Errorf("--file is required")
		}

		srcPath := strings.TrimSpace(uploadFile)
		info, err := os.Stat(srcPath)
		if err != nil {
			return fmt.Errorf("stat source file: %w", err)
		}
		if info.IsDir() {
			return fmt.Errorf("--file must be a regular file")
		}

		authz := strings.TrimSpace(uploadAuthz)
		if authz == "" {
			return fmt.Errorf("--authz is required")
		}

		serverURL, err := cmd.Flags().GetString("server")
		if err != nil {
			return fmt.Errorf("get server flag: %w", err)
		}
		c, err := syclient.New(serverURL)
		if err != nil {
			return err
		}

		fileBytes, err := os.ReadFile(srcPath)
		if err != nil {
			return fmt.Errorf("read file for hashing: %w", err)
		}
		hash := sha256.Sum256(fileBytes)
		checksum := hex.EncodeToString(hash[:])

		did := strings.TrimSpace(uploadDID)
		if did == "" {
			did = checksum
		}

		dc := drs.NewDrsClient(c.Requestor(), nil, c.Logger())

		drsObj := &drs.DRSObject{
			Id:   did,
			Name: filepath.Base(srcPath),
			Size: info.Size(),
			Checksums: []drs.Checksum{
				{
					Type:     "sha256",
					Checksum: checksum,
				},
			},
			AccessMethods: []drs.AccessMethod{
				{
					Type: "s3",
					Authorizations: drs.Authorizations{
						BearerAuthIssuers: []string{authz},
					},
				},
			},
		}

		fmt.Fprintf(cmd.OutOrStdout(), "Uploading %s (%s)...\n", srcPath, upload.FormatSize(info.Size()))
		fmt.Fprintf(cmd.OutOrStdout(), "DID: %s\n", did)

		_, err = upload.RegisterFile(ctx, c.Data(), dc, drsObj, srcPath, "")
		if err != nil {
			return fmt.Errorf("upload failed: %w", err)
		}

		fmt.Fprintf(cmd.OutOrStdout(), "\nsuccessfully uploaded %s\n", did)
		return nil
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL