| 46 | } |
| 47 | |
| 48 | func shareLinkUpdate(cmd *cobra.Command, args []string) error { |
| 49 | if len(args) != 1 { |
| 50 | return invalidArgumentsErrorWithDetails("`share-link update` requires a `url` argument", argumentErrorDetails("url")) |
| 51 | } |
| 52 | |
| 53 | url := args[0] |
| 54 | if url == "" { |
| 55 | return invalidArgumentsErrorWithDetails("`share-link update` requires a non-empty URL", mergeJSONErrorDetails(argumentErrorDetails("url"), urlErrorDetails(url))) |
| 56 | } |
| 57 | |
| 58 | opts, err := parseShareLinkUpdateOptions(cmd) |
| 59 | if err != nil { |
| 60 | return err |
| 61 | } |
| 62 | |
| 63 | dbx := newSharedLinkClient(config) |
| 64 | if opts.usesRawSettings() { |
| 65 | if err := dbx.ModifySharedLinkSettingsRawContext(currentContext(), url, rawSharedLinkSettingsFromUpdateOptions(opts), opts.removeExpiration); err != nil { |
| 66 | return withJSONErrorDetails(err, urlErrorDetails(url), operationErrorDetails("share_link_update")) |
| 67 | } |
| 68 | return renderShareLinkUpdateOutput(cmd, dbx, url, opts, nil) |
| 69 | } |
| 70 | |
| 71 | settings := sharing.NewSharedLinkSettings() |
| 72 | if opts.expires != nil { |
| 73 | t := dropbox.DBXTime(*opts.expires) |
| 74 | settings.Expires = &t |
| 75 | } |
| 76 | if opts.allowDownload { |
| 77 | settings.AllowDownload = true |
| 78 | } |
| 79 | if opts.audience != nil { |
| 80 | settings.Audience = opts.audience |
| 81 | } |
| 82 | if opts.password.set { |
| 83 | settings.RequirePassword = true |
| 84 | settings.LinkPassword = opts.password.password |
| 85 | } |
| 86 | |
| 87 | arg := sharing.NewModifySharedLinkSettingsArgs(url, settings) |
| 88 | arg.RemoveExpiration = opts.removeExpiration |
| 89 | |
| 90 | if opts.hasSDKSettings() { |
| 91 | link, err := dbx.ModifySharedLinkSettingsContext(currentContext(), arg) |
| 92 | if err != nil { |
| 93 | return withJSONErrorDetails(err, urlErrorDetails(url), operationErrorDetails("share_link_update")) |
| 94 | } |
| 95 | return renderShareLinkUpdateOutput(cmd, dbx, url, opts, link) |
| 96 | } |
| 97 | |
| 98 | return renderShareLinkUpdateOutput(cmd, dbx, url, opts, nil) |
| 99 | } |
| 100 | |
| 101 | func renderShareLinkUpdateOutput(cmd *cobra.Command, dbx sharedLinkClient, url string, opts shareLinkUpdateOptions, link sharing.IsSharedLinkMetadata) error { |
| 102 | commandVerboseStatus(cmd, "Updated shared link %s", url) |