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.
Click to show internal directories.
Click to hide internal directories.