示例#1
0
        public async Task <AccountConfiguration> CreateAccount()
        {
            var isOk = OAuth2Flow.TryAuthenticate(this);

            if (!isOk)
            {
                return(null);
            }

            var client = HiDriveHelper.GetClient(_authenticator);
            //var fields = new[]
            //{
            //    User.Fields.Account, User.Fields.Alias, User.Fields.Description, User.Fields.Protocols, User.Fields.IsAdmin,
            //    User.Fields.EMail, User.Fields.IsEncrypted, User.Fields.Home, User.Fields.HomeId, User.Fields.IsOwner, User.Fields.Language,
            //};
            var user = await client.User.Me.Get().ExecuteAsync();

            var account = new AccountConfiguration()
            {
                Type   = StorageType.HiDrive,
                Id     = user.Account,
                Name   = user.Alias,
                Secret = _authenticator.Token.RefreshToken,
            };

            return(account);
        }
        public async Task <AccountConfiguration> CreateAccount_Oidc()
        {
            var f = new OidcWaitForm();

            f.InitEx(StorageType.HiDrive);
            f.Show();


            var browser = new OidcSystemBrowser(Enumerable.Range(50001, 50020));

            var redirectUri = browser.RedirectUri;

            var uri   = _authenticator.GetAuthorizationCodeRequestUrl(new AuthorizationScope(AuthorizationRole.User, AuthorizationPermission.ReadWrite), redirectUri);
            var query = await browser.GetQueryStringAsync(uri.ToString(), f.CancellationToken);

            var code  = query["code"];
            var token = await _authenticator.AuthenticateByAuthorizationCodeAsync(code);

            var client = HiDriveHelper.GetClient(_authenticator);
            var user   = await client.User.Me.Get().ExecuteAsync();

            var account = new AccountConfiguration()
            {
                Type   = StorageType.HiDrive,
                Id     = user.Account,
                Name   = user.Alias,
                Secret = _authenticator.Token.RefreshToken,
            };


            f.Close();

            return(account);
        }
示例#3
0
        private async Task <IHiDriveClient> GetApi()
        {
            if (_api == null)
            {
                _api = await HiDriveHelper.GetClient(account);
            }

            return(_api);
        }
示例#4
0
 public HiDriveStorageConfigurator()
 {
     _authenticator = HiDriveHelper.GetAuthenticator();
 }