Доступ к общим папкам из общего ресурса - PullRequest
0 голосов
/ 24 января 2020

Я узнал, как получить доступ к верхнему уровню общих папок в ShareFile. но как мне получить доступ к папкам второго уровня? Значение общих папок / второго уровня / и папок третьего уровня? Общие папки / Второй уровень / Третий уровень?

Это то, что у меня есть, но я получаю сообщение об ошибке, что файл отсутствует в строке кода ecomSubs. Я понимаю ошибку, это не проблема для меня. Код, который исправит это, убивает меня, и я не могу восстановиться после.

https://pastebin.com/FCdp713k
public struct SampleUser
{
    public string Username { get; set; }
    public string Password { get; set; }
    public string Subdomain { get; set; }
    public string ControlPlane { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        //Console.WriteLine("Hello World!");
        var user = new SampleUser
        {
            ControlPlane = "sharefile.com",
            Username = "user",
            Password = "pass!",
            Subdomain = "sd"
        };

        string oauthClientId = "secret";
        string oauthClientSecret = "secret";

        if (string.IsNullOrEmpty(oauthClientId) || string.IsNullOrEmpty(oauthClientSecret))
        {
            Console.WriteLine("You must provide Client ID and Client Secret");
            return;
        }

        if (string.IsNullOrEmpty(user.Username) || string.IsNullOrEmpty(user.Password) || string.IsNullOrEmpty(user.Subdomain))
        {
            Console.WriteLine("You must provide a username, password and sub-domain");
            return;
        }

        RunSample(user, oauthClientId, oauthClientSecret).Wait();
        Console.ReadLine();
    }
    public static async Task RunSample(SampleUser user, string clientID, string clientSecret)
    {
        var sfClient = await PasswordAuthencation(user, clientID, clientSecret);

        await StartSession(sfClient);

        var defaultUserFolder = await LoadFolderAndChildren(sfClient);

        var allSharedAlias = sfClient.Items.GetAlias("allshared");

        var sharedFolders = sfClient.Items.GetChildren(allSharedAlias).Execute();

        foreach (var folder in sharedFolders.Feed)
        {
            if (folder.Name.ToString() == "Art Files")
            {
                var subs = sfClient.Items.GetAlias(folder.Name);
                try
                {
                    var ecomSubs = sfClient.Items.GetChildren(subs).Execute();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }
        //Console.WriteLine(allSharedAlias.ToString());

    }
    public static async Task<Folder> LoadFolderAndChildren(ShareFileClient sfClient)
    {
        var folder = (Folder)await sfClient.Items.Get().Expand("Children").ExecuteAsync();
        return folder;
    }
    public static async Task StartSession(ShareFileClient sfClient)
    {
        var session = await sfClient.Sessions.Login().Expand("Principal").ExecuteAsync();
        Console.WriteLine("Authenicated As " + session.Principal.Email);
    }
    public static async Task<ShareFileClient> PasswordAuthencation(SampleUser user, string clientID, string clientSecret)
    {
        var configuration = Configuration.Default();
        configuration.Logger = new DefaultLoggingProvider();
        var sfClient = new ShareFileClient("https://secure.sf-api.com/sf/v3/");
        var oauthService = new OAuthService(sfClient, clientID, clientSecret);

        var oauthToken = await oauthService.PasswordGrantAsync(user.Username, user.Password, user.Subdomain, user.ControlPlane);

        sfClient.AddOAuthCredentials(oauthToken);
        sfClient.BaseUri = oauthToken.GetUri();

        return sfClient;
    }
}


...