// Асинхронная функция для проверки обновлений 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}"); }
// Получить 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); } }