Я узнал, как получить доступ к верхнему уровню общих папок в 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;
}
}