Пример #1
0
        private void bg_bgAppUpdateLog_DoWork(object sender, DoWorkEventArgs e)
        {
            config = DropBoxConfiguration.GetStandardConfiguration();
            if (IsolatedStorageFile.GetUserStoreForApplication().FileExists(FileName))
            {
                token = LoadAccessTokenFromIsolatedStorage();
            }
            else
            {
                requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config, APP_KEY, APP_SECRET);
                //Put a breakpoint in the next line and make sure to visit AuthorizationUrl manually in the web browser
                String AuthorizationUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(config, requestToken);
                token = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(config, APP_KEY, APP_SECRET, requestToken);
            }
            m_dropBox.Open(config, token);

            //// get a specific directory in the cloud storage, e.g. /Public
            //var publicFolder = cloudStorage.GetFolder("/Photos");

            //foreach (var fof in publicFolder)
            //{
            //    //check if we have a directory
            //    Boolean bIsDirectory = fof is ICloudDirectoryEntry;

            //    //output the info
            //    Debug.WriteLine("{0}: {1}", bIsDirectory ? "DIR" : "FIL", fof.Name);
            //}

            //cloudStorage.Close();
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.IsReadOnly)
            {
                SubmitError("No session is availible.", Source);
                return;
            }

            var config      = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration;
            var callbackUri = new UriBuilder(Request.GetUrlRewriter());

            if (!string.IsNullOrEmpty(Request.QueryString[AuthorizationUrlKey]) && Session[RequestTokenSessionKey] != null)
            {
                //Authorization callback
                try
                {
                    var accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(config,
                                                                                                             ImportConfiguration.DropboxAppKey,
                                                                                                             ImportConfiguration.DropboxAppSecret,
                                                                                                             Session[RequestTokenSessionKey] as DropBoxRequestToken);

                    Session[RequestTokenSessionKey] = null; //Exchanged
                    var storage     = new CloudStorage();
                    var base64token = storage.SerializeSecurityTokenToBase64Ex(accessToken, config.GetType(), new Dictionary <string, string>());
                    storage.Open(config, accessToken); //Try open storage!
                    var root = storage.GetRoot();
                    if (root == null)
                    {
                        throw new Exception();
                    }

                    SubmitToken(base64token, Source);
                }
                catch
                {
                    SubmitError("Failed to open storage with token", Source);
                }
            }
            else
            {
                callbackUri.Query           += string.Format("&{0}=1", AuthorizationUrlKey);
                config.AuthorizationCallBack = callbackUri.Uri;
                // create a request token
                var requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config, ImportConfiguration.DropboxAppKey,
                                                                                      ImportConfiguration.DropboxAppSecret);
                if (requestToken == null)
                {
                    SubmitError("Failed to open storage with this credentials", Source);
                    return;
                }

                var authorizationUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(config, requestToken);
                Session[RequestTokenSessionKey] = requestToken; //Store token into session!!!
                Response.Redirect(authorizationUrl);
            }
        }
        public ulong GetAvailableMemory()
        {
            if (_accessToken == null)
            {
                throw new InvalidOperationException("Connection is not established.");
            }

            var quotaInfo = DropBoxStorageProviderTools.GetAccountInformation(_accessToken).QuotaInfo;

            return(quotaInfo.QuotaBytes - quotaInfo.NormalBytes);
        }
Пример #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.IsReadOnly)
            {
                SubmitError("No session is availible.", Source);
                return;
            }

            if (Boolean.TrueString.Equals(Request.QueryString[AuthorizationNotApproved] ?? "false", StringComparison.InvariantCultureIgnoreCase))
            {
                SubmitError("Canceled at provider", Source);
                return;
            }

            if (!string.IsNullOrEmpty(Request.QueryString[AuthorizationUrlKey]) && Session[RequestTokenSessionKey] != null)
            {
                //Authorization callback
                try
                {
                    var dropboxToken = Session[RequestTokenSessionKey] as DropBoxRequestToken;
                    SubmitToken(dropboxToken.ToString(), Source);
                }
                catch
                {
                    SubmitError("Failed to open storage with token", Source);
                }
            }
            else
            {
                var callbackUri = new UriBuilder(Request.GetUrlRewriter());
                callbackUri.Query += string.Format("&{0}=1", AuthorizationUrlKey);

                var config = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration;
                config.AuthorizationCallBack = callbackUri.Uri;

                // create a request token
                var requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config,
                                                                                      ImportConfiguration.DropboxAppKey,
                                                                                      ImportConfiguration.DropboxAppSecret);
                if (requestToken == null)
                {
                    SubmitError("Failed to open storage with this credentials", Source);
                    return;
                }

                Session[RequestTokenSessionKey] = requestToken; //Store token into session!!!

                var authorizationUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(config, requestToken);
                Response.Redirect(authorizationUrl);
            }
        }
Пример #5
0
        string UploadDownlaodable(HttpContext context, CloudStorage storage, string newFileName, string albumId)
        {
            var downloadFolder = storage.EnsureDownloadFolder(albumId);

            using (var img = Image.FromStream(context.Request.InputStream))
            {
                using (var photoStream = img.ResampleAsStream(img.Width, img.Height))
                {
                    photoStream.Position = 0;
                    storage.UploadFile(photoStream, newFileName, downloadFolder);
                }
            }
            return(DropBoxStorageProviderTools.GetPublicObjectUrl(storage.CurrentAccessToken,
                                                                  storage.GetFileSystemObject(newFileName, downloadFolder)).AbsoluteUri);
        }
Пример #6
0
        public CloudService(Config config)
        {
            _config = config;

            _storageConfiguration = DropBoxConfiguration.GetStandardConfiguration();

            var requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_storageConfiguration,
                                                                                  _config.Cloud.ConsumerKey,
                                                                                  _config.Cloud.ConsumerSecret);

            _accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(_storageConfiguration,
                                                                                                  _config.Cloud.ConsumerKey,
                                                                                                  _config.Cloud.ConsumerSecret,
                                                                                                  requestToken);
        }
        private void SetUpDropbox()
        {
            AllowClose  = false;
            _UsedConfig = DropBoxConfiguration.GetStandardConfiguration();
            _UsedConfig.AuthorizationCallBack = new Uri("http://better-explorer.com/");
            _UsedConfig.APIVersion            = DropBoxAPIVersion.V1;
            _CurrentRequestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_UsedConfig, Networks.DropBoxAuth.Key, Networks.DropBoxAuth.Secret);
            string AuthUrl = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(_UsedConfig, _CurrentRequestToken);

            this.Navigated += HandleDropboxAuth;
            this.NavigateTo(AuthUrl);
            MainMenu.Visibility     = System.Windows.Visibility.Collapsed;
            this.Width              = 900;
            this.Height             = 650;
            BrowserFrame.Visibility = System.Windows.Visibility.Visible;
        }
Пример #8
0
        string UploadThumbnail(HttpContext context, CloudStorage storage, string newFileName, string albumId)
        {
            context.Request.InputStream.Position = 0;
            var thumbFolder = storage.EnsureThumbFolder(albumId);

            using (var img = Image.FromStream(context.Request.InputStream))
            {
                using (var thumStream = img.ResampleAsStream(192, 119))
                {
                    thumStream.Position = 0;
                    storage.UploadFile(thumStream, newFileName, thumbFolder);
                }
            }
            return(DropBoxStorageProviderTools.GetPublicObjectUrl(storage.CurrentAccessToken,
                                                                  storage.GetFileSystemObject(newFileName, thumbFolder)).AbsoluteUri);
        }
        private void HandleDropboxAuth(object sender, NavigationRoutedEventArgs e)
        {
            if (_GeneratedToken == null && e.Uri.ToString().StartsWith(_UsedConfig.AuthorizationCallBack.ToString()))
            {
                _GeneratedToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(_UsedConfig, Networks.DropBoxAuth.Key, Networks.DropBoxAuth.Secret, _CurrentRequestToken);

                (sender as Window).Close();

                CloudStorage cs = new CloudStorage();
                cs.Open(_UsedConfig, _GeneratedToken);

                Complete(cs.IsOpened, "Dropbox");
                //cs.SerializeSecurityToken(_GeneratedToken);

                cs.Close();
            }
            //throw new NotImplementedException();
        }
        /// <summary>
        /// Creates a connection to the cloud storage.
        /// </summary>
        /// <param name="key">Application key.</param>
        /// <param name="secret">Application secret.</param>
        /// <returns>False if the connection is already established
        /// or a user is not authorized on the website.</returns>
        public bool CreateConnection(string key, string secret)
        {
            if (_accessToken == null)
            {
                try
                {
                    _accessToken =
                        DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(_configuration, key,
                                                                                               secret, _requestToken);

                    return(true);
                }
                catch (UnauthorizedAccessException)
                {
                    return(false);
                }
            }

            return(false);
        }
        public DropBoxCloudStorageManager(string key, string secret)
        {
            _configuration =
                CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration;
            _configuration.AuthorizationCallBack = new Uri("https://www.dropbox.com/home");

            _requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(_configuration, key, secret);

            try
            {
                _authorizationUrl =
                    DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(_configuration, _requestToken);
            }
            catch (NullReferenceException)
            {
                throw new ArgumentException("Invalid application key and/or secret");
            }

            _cloudStorage         = new CloudStorage();
            ApplicationFolderPath = "/";
        }
Пример #12
0
        private static AuthData GetEncodedAccesToken(AuthData authData, ProviderTypes provider)
        {
            switch (provider)
            {
            case ProviderTypes.GoogleDrive:

                var code = authData.Token;

                var token = OAuth20TokenHelper.GetAccessToken(GoogleLoginProvider.GoogleOauthTokenUrl,
                                                              GoogleLoginProvider.GoogleOAuth20ClientId,
                                                              GoogleLoginProvider.GoogleOAuth20ClientSecret,
                                                              GoogleLoginProvider.GoogleOAuth20RedirectUrl,
                                                              code);

                if (token == null)
                {
                    throw new UnauthorizedAccessException(string.Format(FilesCommonResource.ErrorMassage_SecurityException_Auth, provider));
                }

                return(new AuthData(token: token.ToJson()));

            case ProviderTypes.Box:

                code = authData.Token;

                token = OAuth20TokenHelper.GetAccessToken(BoxLoginProvider.BoxOauthTokenUrl,
                                                          BoxLoginProvider.BoxOAuth20ClientId,
                                                          BoxLoginProvider.BoxOAuth20ClientSecret,
                                                          BoxLoginProvider.BoxOAuth20RedirectUrl,
                                                          code);

                if (token == null)
                {
                    throw new UnauthorizedAccessException(string.Format(FilesCommonResource.ErrorMassage_SecurityException_Auth, provider));
                }

                return(new AuthData(token: token.ToJson()));

            case ProviderTypes.DropboxV2:

                code = authData.Token;

                token = OAuth20TokenHelper.GetAccessToken(DropboxLoginProvider.DropboxOauthTokenUrl,
                                                          DropboxLoginProvider.DropboxOAuth20ClientId,
                                                          DropboxLoginProvider.DropboxOAuth20ClientSecret,
                                                          DropboxLoginProvider.DropboxOAuth20RedirectUrl,
                                                          code);

                if (token == null)
                {
                    throw new UnauthorizedAccessException(string.Format(FilesCommonResource.ErrorMassage_SecurityException_Auth, provider));
                }

                return(new AuthData(token: token.ToJson()));

            case ProviderTypes.DropBox:

                var dropBoxRequestToken = DropBoxRequestToken.Parse(authData.Token);

                var config      = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox);
                var accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(config as DropBoxConfiguration,
                                                                                                         ImportConfiguration.DropboxAppKey,
                                                                                                         ImportConfiguration.DropboxAppSecret,
                                                                                                         dropBoxRequestToken);

                var base64Token = new CloudStorage().SerializeSecurityTokenToBase64Ex(accessToken, config.GetType(), new Dictionary <string, string>());

                return(new AuthData(token: base64Token));

            case ProviderTypes.SkyDrive:

                code = authData.Token;

                token = OAuth20TokenHelper.GetAccessToken(OneDriveLoginProvider.OneDriveOauthTokenUrl,
                                                          OneDriveLoginProvider.OneDriveOAuth20ClientId,
                                                          OneDriveLoginProvider.OneDriveOAuth20ClientSecret,
                                                          OneDriveLoginProvider.OneDriveOAuth20RedirectUrl,
                                                          code);

                if (token == null)
                {
                    throw new UnauthorizedAccessException(string.Format(FilesCommonResource.ErrorMassage_SecurityException_Auth, provider));
                }

                accessToken = AppLimit.CloudComputing.SharpBox.Common.Net.oAuth20.OAuth20Token.FromJson(token.ToJson());

                if (accessToken == null)
                {
                    throw new UnauthorizedAccessException(string.Format(FilesCommonResource.ErrorMassage_SecurityException_Auth, provider));
                }

                config = CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.SkyDrive);
                var storage = new CloudStorage();
                base64Token = storage.SerializeSecurityTokenToBase64Ex(accessToken, config.GetType(), new Dictionary <string, string>());

                return(new AuthData(token: base64Token));

            case ProviderTypes.SharePoint:
            case ProviderTypes.WebDav:
                break;

            default:
                authData.Url = null;
                break;
            }

            return(authData);
        }
Пример #13
0
        internal static CloudStorage InitCouldStorage(Form1 form, CloudStorage cloudStorage)
        {
            if (IsCloudStorageOpen(cloudStorage))
            {
                return(cloudStorage);
            }

            ToolStripStatusLabel toolStripStatusLabel = form.toolStripStatusLabel;

            try
            {
                if (ConfigUtil.GetBoolParameter("ProxyEnabled"))
                {
                    if (String.IsNullOrEmpty(ConfigUtil.GetStringParameter("ProxyHost")))
                    {
                        WindowManager.ShowAlertBox(form, LanguageUtil.GetCurrentLanguageString("ProxyHostRequired", className));
                        return(null);
                    }

                    WebRequestManager.Instance.SetProxySettings(ConfigUtil.GetStringParameter("ProxyHost"), ConfigUtil.GetIntParameter("ProxyPort"), ProxyUtil.InitNetworkCredential());
                }

                DropBoxConfiguration standardConfiguration = DropBoxConfiguration.GetStandardConfiguration();

                try                                                                                                                                  //I try to authenticate myself with previous access token
                {
                    using (Stream tokenStream = new MemoryStream(Encoding.UTF8.GetBytes(PasswordUtil.GetStringParameter("LastDropboxAccessToken")))) //ConfigUtil.GetStringParameter("LastDropboxAccessToken")
                    {
                        if (tokenStream.Length == 0)
                        {
                            throw new UnauthorizedAccessException();
                        }

                        cloudStorage = new CloudStorage();
                        cloudStorage.Open(standardConfiguration, cloudStorage.DeserializeSecurityToken(tokenStream)); //cloudStorage.DeserializeSecurityToken(tokenStream, standardConfiguration)
                    }
                }
                catch (Exception) //No way, I should renew my access token
                {
                    standardConfiguration.AuthorizationCallBack = new Uri(ConstantUtil.dropboxAuthUrl);
                    DropBoxRequestToken requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(standardConfiguration, ConstantUtil.dropboxConsumerKey, ConstantUtil.dropboxConsumerSecret);

                    if (requestToken == null)
                    {
                        throw new UnauthorizedAccessException();
                    }

                    if (WindowManager.ShowInternalBrowser(form, DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(standardConfiguration, requestToken)) == DialogResult.Cancel)
                    {
                        return(null);
                    }

                    //OtherManager.StartProcess(form, DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(standardConfiguration, requestToken));
                    //if (WindowManager.ShowQuestionBox(form, LanguageUtil.GetCurrentLanguageString("SuccessfullyAuth", className)) != DialogResult.Yes)
                    //{
                    //    return null;
                    //}

                    ICloudStorageAccessToken accessToken = DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(standardConfiguration, ConstantUtil.dropboxConsumerKey, ConstantUtil.dropboxConsumerSecret, requestToken);

                    if (accessToken == null)
                    {
                        throw new UnauthorizedAccessException();
                    }

                    cloudStorage = new CloudStorage();
                    cloudStorage.Open(standardConfiguration, accessToken);

                    if (ConfigUtil.GetBoolParameter("RememberDropboxAccess"))
                    {
                        using (Stream tokenStream = cloudStorage.SerializeSecurityToken(accessToken))
                        {
                            PasswordUtil.UpdateParameter("LastDropboxAccessToken", new StreamReader(tokenStream).ReadToEnd()); //ConfigUtil.UpdateParameter("LastDropboxAccessToken", new StreamReader(tokenStream).ReadToEnd());
                        }
                    }
                    else
                    {
                        PasswordUtil.UpdateParameter("LastDropboxAccessToken", String.Empty); //ConfigUtil.UpdateParameter("LastDropboxAccessToken", String.Empty);
                    }

                    toolStripStatusLabel.Text = LanguageUtil.GetCurrentLanguageString("DropboxLogIn", className);
                }

                return(cloudStorage);
            }
            catch (UnauthorizedAccessException)
            {
                WindowManager.ShowAlertBox(form, LanguageUtil.GetCurrentLanguageString("UnauthorizedAccess", className));
                return(null);
            }
            catch (UriFormatException)
            {
                WindowManager.ShowAlertBox(form, LanguageUtil.GetCurrentLanguageString("UriFormat", className));
                return(null);
            }
            finally
            {
                form.Cursor = Cursors.Default;
            }
        }