/
ArtSerg
/
IntegrationProject
Обзор
Документация
Войти
/
ArtSerg
/
IntegrationProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab4
Integration1/Client/ExampleClient.cs
122 строки
5 KB
artS3rg
Добавлена интеграция RabbitMQ для асинхронного обмена сообщениями
14 дек 2025, 21:50
14 дек 2025, 21:50
a02de12
Код
Авторство
О чём код?
using Integration1.Client; using Integration1.Messaging; using Microsoft.Extensions.Configuration; using System.Text.Json; namespace Integration1.Client { /// <summary> /// Пример использования RabbitMQ клиента /// </summary> public class ExampleClient { public static async Task RunExample(IConfiguration config) { using var client = new RabbitMQClient(config); // Пример 1: Регистрация пользователя Console.WriteLine("=== Регистрация пользователя ==="); var registerRequest = new RequestMessage { Version = "v1", Action = "register", Data = new Dictionary<string, object> { { "username", "testuser" }, { "password", "123456" } } }; var registerResponse = await client.SendRequestAsync(registerRequest); Console.WriteLine($"Status: {registerResponse.Status}"); Console.WriteLine($"Data: {System.Text.Json.JsonSerializer.Serialize(registerResponse.Data)}"); Console.WriteLine(); // Пример 2: Вход в систему Console.WriteLine("=== Вход в систему ==="); var loginRequest = new RequestMessage { Version = "v1", Action = "login", Data = new Dictionary<string, object> { { "username", "testuser" }, { "password", "123456" } } }; var loginResponse = await client.SendRequestAsync(loginRequest); Console.WriteLine($"Status: {loginResponse.Status}"); Console.WriteLine($"Data: {System.Text.Json.JsonSerializer.Serialize(loginResponse.Data)}"); Console.WriteLine(); // Пример 3: Создание задачи if (loginResponse.Status == "ok" && loginResponse.Data != null) { Console.WriteLine("=== Создание задачи ==="); string? jwtToken = null; try { // Data приходит как JsonElement, извлекаем токен напрямую if (loginResponse.Data is JsonElement jsonElement && jsonElement.ValueKind == JsonValueKind.Object) { if (jsonElement.TryGetProperty("token", out var tokenElement)) { jwtToken = tokenElement.GetString(); } } else { // Fallback: сериализуем и десериализуем var jsonString = JsonSerializer.Serialize(loginResponse.Data); var tokenObj = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(jsonString); if (tokenObj?.ContainsKey("token") == true) { jwtToken = tokenObj["token"].GetString(); } } } catch (Exception ex) { Console.WriteLine($"Error extracting token: {ex.Message}"); } var createTaskRequest = new RequestMessage { Version = "v1", Action = "create_task", Data = new Dictionary<string, object> { { "token", jwtToken ?? "" }, { "title", "Сделать лабораторную" }, { "description", "REST API проект по C#" }, { "priority", "High" } } }; var createTaskResponse = await client.SendRequestAsync(createTaskRequest); Console.WriteLine($"Status: {createTaskResponse.Status}"); Console.WriteLine($"Data: {System.Text.Json.JsonSerializer.Serialize(createTaskResponse.Data)}"); Console.WriteLine(); // Пример 4: Получение задач Console.WriteLine("=== Получение задач ==="); var getTasksRequest = new RequestMessage { Version = "v1", Action = "get_tasks", Data = new Dictionary<string, object> { { "token", jwtToken ?? "" }, { "page", 1 }, { "pageSize", 10 } } }; var getTasksResponse = await client.SendRequestAsync(getTasksRequest); Console.WriteLine($"Status: {getTasksResponse.Status}"); Console.WriteLine($"Data: {System.Text.Json.JsonSerializer.Serialize(getTasksResponse.Data)}"); } } } }