public static async Task <FileSystemResult <AmazonFileSystem> > Create(string fname, IOAuthProvider provider, Dictionary <string, object> settings, string pluginanme, string userauthorization = null)
        {
            AmazonFileSystem am = new AmazonFileSystem(provider);

            am.FS                  = am;
            am.OAuth.OAuthUrl      = AmazonOAuth;
            am.OAuth.EndPointUrl   = AmazonEndpoint;
            am.OAuth.OAuthLoginUrl = AmazonOAuthLogin;
            am.OAuth.DefaultScopes = AmazonScopes;
            bool userauth = !string.IsNullOrEmpty(userauthorization);

            if (userauth)
            {
                am.DeserializeAuth(userauthorization);
            }
            FileSystemResult r = await am.OAuth.Login(settings, pluginanme, userauth, false);

            if (!r.IsOk)
            {
                return(new FileSystemResult <AmazonFileSystem>(r.Error));
            }
            r = await am.CheckExpirations();

            if (!r.IsOk)
            {
                return(new FileSystemResult <AmazonFileSystem>(r.Error));
            }
            string url = AmazonRoot.FormatRest(am.OAuth.EndPoint.MetadataUrl);
            FileSystemResult <dynamic> fr = await am.List(url);

            if (!fr.IsOk)
            {
                return(new FileSystemResult <AmazonFileSystem>(fr.Error));
            }
            foreach (dynamic v in fr.Result)
            {
                if (v.kind == "FOLDER")
                {
                    am.SetData(JsonConvert.SerializeObject(v));
                    am.FsName = fname;
                    await am.PopulateAsync();

                    return(new FileSystemResult <AmazonFileSystem>(am));
                }
            }
            return(new FileSystemResult <AmazonFileSystem>("Amazon Root directory not found"));
        }
示例#2
0
        public async Task <FileSystemResult <IFileSystem> > InitAsync(string fname, IOAuthProvider provider, Dictionary <string, object> settings, string userauthorization = null)
        {
            string frname;

            if (settings.ContainsKey(ClientAppFriendlyName) && (settings[ClientAppFriendlyName] is string))
            {
                frname = (string)settings[ClientAppFriendlyName];
            }
            else
            {
                return(new FileSystemResult <IFileSystem>("Unable to find " + fname + " '" + ClientAppFriendlyName + "' in settings"));
            }
            FileSystemResult <AmazonFileSystem> r = await AmazonFileSystem.Create(fname, provider, settings, Name, userauthorization);

            if (!r.IsOk)
            {
                return(new FileSystemResult <IFileSystem>(r.Error));
            }
            r.Result.AppFriendlyName = frname;
            return(new FileSystemResult <IFileSystem>(r.Result));
        }
示例#3
0
 public AmazonDirectory(string parentpath, AmazonFileSystem fs) : base(parentpath, fs, AmazonMappings.Maps)
 {
     IsPopulated = false;
 }
 public AmazonObject(string parentname, AmazonFileSystem fs, Mappings maps) : base(parentname, maps)
 {
     FS = fs;
 }
示例#5
0
 public AmazonFile(string parentpath, AmazonFileSystem fs) : base(parentpath, fs, AmazonMappings.Maps)
 {
 }