예제 #1
0
 public FolderItemsResolver(WsFolderPath folderPath, WsApiClient apiClient, Action <WsFolderPath> removeFromParent)
 {
     _folderPath       = folderPath;
     _apiClient        = apiClient;
     _removeFromParent = removeFromParent;
     Log("Add folder", folderPath);
 }
 private WsItemsReaderEngine(WsApiClient apiClient, HttpResponseMessage responseMessage, WsFolderPath folderPath, bool useCreatedFileResolver)
 {
     _apiClient              = apiClient;
     _responseMessage        = responseMessage;
     _folderPath             = folderPath;
     _useCreatedFileResolver = useCreatedFileResolver;
 }
        public static async Task <WsItemsReaderEngine> Create(WsApiClient apiClient, HttpResponseMessage responseMessage, WsFolderPath folderPath, bool useCreatedFileResolver)
        {
            WsItemsReaderEngine engine = new WsItemsReaderEngine(apiClient, responseMessage, folderPath, useCreatedFileResolver);
            XmlDocument         xml    = new XmlDocument();

            xml.Load(await engine._responseMessage.Content.ReadAsStreamAsync());
            engine._xmlReader = new XmlNodeReader(xml.DocumentElement);

            if (engine._xmlReader.Read() && engine._xmlReader.Name == ROOT_ELEMENT_NAME && engine._xmlReader.Read() && engine._xmlReader.Name == "status")
            {
                engine.Status = engine._xmlReader.ReadElementContentAsString();
                if (engine.Status != ResultStatus.OK)
                {
                    if (engine._xmlReader.Name == "code")
                    {
                        engine.ErrorCode = engine._xmlReader.ReadElementContentAsString();
                    }
                    engine.Dispose();
                }
            }
            else
            {
                engine.Status = "Xml format error.";
                engine.Dispose();
            }
            return(engine);
        }
        public async Task <SuccessAccountRegistrationInfo> TryRegisterAccount(WsAccountLoginInfo userCredential)
        {
            if (userCredential == null)
            {
                throw new ArgumentNullException(nameof(userCredential));
            }
            if (_accounts.Exists(a => a.UserName.Equals(userCredential.UserName, StringComparison.InvariantCultureIgnoreCase)))
            {
                throw new ArgumentException($"Account {userCredential.UserName} is already registered.", nameof(userCredential));
            }

            WsApiClient apiClient = new WsApiClient(GetDeviceUuid());
            RegisterAccountSecretStore registerSecretStore = new RegisterAccountSecretStore(userCredential.UserPassword);
            bool successLogin = await apiClient.Login(userCredential.UserName, registerSecretStore, userCredential.RememberUserPassword?registerSecretStore : null);

            if (successLogin)
            {
                WsAccount newAccount = new WsAccount(Save, _protector, userCredential.UserName, registerSecretStore.UserPasswordHash);
                _accounts.Add(newAccount);
                Save();
                return(new SuccessAccountRegistrationInfo(newAccount, apiClient));
            }
            return(null);
        }
예제 #5
0
 public CreatedFileResolver(WsApiClient apiClient)
 {
     _apiClient = apiClient;
 }