示例#1
0
        // Асинхронная функция для проверки обновлений
        public async Task checkUpdates()
        {
            // Очищаем список заданий
            updateTasks.Clear();

            logPrint($"Получение параметров синхронизации");

            // Получаем параметры синхронизации с сервера
            JSONResponse syncOptions_response = await Task.Run(() =>
            {
                return(getJsonFromServer(".syncOptions"));
            });

            // Если при получении параметров произошла ошибка - сообщаем об этом и уходим
            if (syncOptions_response.deserializedObject == null)
            {
                logPrint(syncOptions_response.message);
                return;
            }

            SyncOptions syncOptions = ((JObject)syncOptions_response.deserializedObject).ToObject <SyncOptions>();

            logPrint($"Получение хеш-листа с сервера");

            // Получаем хеш-лист с сервера
            JSONResponse serverHashList_response = await Task.Run(() =>
            {
                return(getJsonFromServer(".hash"));
            });

            // Если при получении хеш-листа произошла ошибка - сообщаем об этом и уходим
            if (serverHashList_response.deserializedObject == null)
            {
                logPrint(serverHashList_response.message);
                return;
            }

            List <FileHashInfo> serverHashList = ((JArray)serverHashList_response.deserializedObject).ToObject <List <FileHashInfo> >();

            logPrint($"Генерация хеш-листа на стороне клиента");

            // Генерируем хеш-лист на стороне клиента
            List <FileHashInfo> clientHashList = await Task.Run(() =>
            {
                return(clientHashGenerate(syncOptions));
            });

            logPrint($"Построение списка требуемых изменений");

            // Генерируем список задач по обновлениям, на основе сравнения хеш-листов клиента и сервера
            updateTasks = await Task.Run(() =>
            {
                return(updateTasksGenerate(clientHashList, serverHashList));
            });

            logPrint($"Доступно обновлений: {updateTasks.Count}");
        }
示例#2
0
        // Получить JSON с сервера
        private JSONResponse getJsonFromServer(string path)
        {
            JSONResponse response = new JSONResponse();

            try
            {
                // Получаем файл с веб-сервера, в виде json строки, затем десериализуем его в объект dynamic класса
                response.deserializedObject = JsonConvert.DeserializeObject(webClient.DownloadString(host + path));
                response.message            = $"Успех!";
                return(response);
            }
            catch (Exception error)
            {
                response.deserializedObject = null;
                response.message            = $"Не удалось получить информацию об обновлениях от сервера! \n {error.Message}";
                return(response);
            }
        }