/// <summary> /// Checks if link has an equal or more 'visible' permission than requested visibility /// TeamOnly < Password < Public /// </summary> /// <param name="link"></param> /// <param name="requestedVisibility"></param> /// <returns></returns> public static bool IsMoreVisiblePermission(SharedLinkMetadata link, RequestedVisibility requestedVisibility) { if (ConvertResolvedVisibilityToInt(link.LinkPermissions.ResolvedVisibility) >= ConvertRequestedVisibilityToInt(requestedVisibility)) { return(true); } else { return(false); } }
public static int ConvertRequestedVisibilityToInt(RequestedVisibility visibility) { if (visibility.IsTeamOnly) { return(0); } else if (visibility.IsPassword) { return(1); } else if (visibility.IsPublic) { return(2); } else { return(0); } }
public static async Task <SharedLinkMetadata> ChangeShareLinkPermissions(DropboxClient client, string url, RequestedVisibility requestedVisibility) { SharedLinkSettings settings = new SharedLinkSettings(requestedVisibility); try { return(await client.Sharing.ModifySharedLinkSettingsAsync(url, settings)); } catch (ApiException <ModifySharedLinkSettingsError> error) { //TODO: Add error handling return(new SharedLinkMetadata()); } }
public static async Task <SharedLinkMetadata> CreateFileShareLink(DropboxClient client, Metadata file, RequestedVisibility requestedVisibility, string password) { SharedLinkSettings settings = new SharedLinkSettings(); if (requestedVisibility.IsPassword) { if (password == null) { //TODO: Add error handling return(new SharedLinkMetadata()); } settings = new SharedLinkSettings(requestedVisibility, password); } else { settings = new SharedLinkSettings(requestedVisibility); } CreateSharedLinkWithSettingsArg arg = new CreateSharedLinkWithSettingsArg(file.PathLower, settings); try { return(await client.Sharing.CreateSharedLinkWithSettingsAsync(arg)); } catch (ApiException <CreateSharedLinkWithSettingsError> error) { //TODO: Add error handling return(new SharedLinkMetadata()); } }
public static async Task <SharedLinkMetadata> HandleShareFile(DropboxClient client, Metadata file, RequestedVisibility requestedVisibility, string password = null, bool forceNewLink = false) { SharedLinkMetadata existingLink = await GetFileShareLink(client, file); if (existingLink != null) { if (forceNewLink) { await RevokeFileShareLink(client, existingLink.Url); } else if (!IsMoreVisiblePermission(existingLink, requestedVisibility)) { return(await ChangeShareLinkPermissions(client, existingLink.Url, requestedVisibility)); } else { return(existingLink); } } return(await CreateFileShareLink(client, file, requestedVisibility, password)); }