예제 #1
0
 /// <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);
     }
 }
예제 #2
0
 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);
     }
 }
예제 #3
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());
            }
        }
예제 #4
0
        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());
            }
        }
예제 #5
0
        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));
        }