Структура

This commit is contained in:
Халимов Рустам
2026-03-30 00:09:12 +03:00
parent 0209802e9e
commit 89b2eeea6c
124 changed files with 623 additions and 599 deletions

View File

@@ -173,31 +173,57 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Profiles.UnitT
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contracts", "Contracts", "{FFBE31B8-50B9-B415-22BC-2F92C97CADA3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Admin.Contracts", "src\Contracts\Knot.Modules.Admin.Contracts\Knot.Modules.Admin.Contracts.csproj", "{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Admin", "Admin", "{1C8A9B45-FCC1-A5B3-3601-CB39D7CED4E3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Auth.Contracts", "src\Contracts\Knot.Modules.Auth.Contracts\Knot.Modules.Auth.Contracts.csproj", "{E8C0F163-735D-44A2-B684-673A0B0D7D2A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Admin", "src\Contracts\Admin\Knot.Contracts.Admin.csproj", "{D3C7D267-5646-4907-A451-E7CFA853BBF5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Conversations.Contracts", "src\Contracts\Knot.Modules.Conversations.Contracts\Knot.Modules.Conversations.Contracts.csproj", "{65E67218-A02C-4C42-8B60-6FDAB737E613}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Auth", "Auth", "{28F8F726-0D9B-F051-A252-088B861055C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Federation.Contracts", "src\Contracts\Knot.Modules.Federation.Contracts\Knot.Modules.Federation.Contracts.csproj", "{7226D94C-B9A5-41D7-9E59-50A68F39EE78}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Auth", "src\Contracts\Auth\Knot.Contracts.Auth.csproj", "{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Klipy.Contracts", "src\Contracts\Knot.Modules.Klipy.Contracts\Knot.Modules.Klipy.Contracts.csproj", "{4AC0C433-475F-4B0C-B160-E4F33779E3CB}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Conversations", "Conversations", "{19B3F750-A3A3-3AEB-CE4F-46FB52BB3151}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Messaging.Contracts", "src\Contracts\Knot.Modules.Messaging.Contracts\Knot.Modules.Messaging.Contracts.csproj", "{9D86914A-43A8-4451-BEFD-092ABFF793D6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Conversations", "src\Contracts\Conversations\Knot.Contracts.Conversations.csproj", "{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Profiles.Contracts", "src\Contracts\Knot.Modules.Profiles.Contracts\Knot.Modules.Profiles.Contracts.csproj", "{1DC69DD3-3348-4375-844C-D44A760D50EC}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Federation", "Federation", "{E97EBA1B-122C-1D64-94D9-187425FF5DF0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Relations.Contracts", "src\Contracts\Knot.Modules.Relations.Contracts\Knot.Modules.Relations.Contracts.csproj", "{352A455F-AC3F-4D34-BADA-574BF83E131C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Federation", "src\Contracts\Federation\Knot.Contracts.Federation.csproj", "{62A821F2-F296-4888-8AB1-A80ED514AC08}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Settings.Contracts", "src\Contracts\Knot.Modules.Settings.Contracts\Knot.Modules.Settings.Contracts.csproj", "{D10F0FA0-A682-42D4-A23F-46094D14A8F6}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Klipy", "Klipy", "{7555181C-EB04-A6C5-D475-6FC0320F57B5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Storage.Contracts", "src\Contracts\Knot.Modules.Storage.Contracts\Knot.Modules.Storage.Contracts.csproj", "{F57F6152-A359-4BB5-AC01-5531C85EE47A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Klipy", "src\Contracts\Klipy\Knot.Contracts.Klipy.csproj", "{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.Stories.Contracts", "src\Contracts\Knot.Modules.Stories.Contracts\Knot.Modules.Stories.Contracts.csproj", "{32631ED6-956A-4572-AD7A-B8D0ECE26C78}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Messaging", "Messaging", "{3E835F76-AFEE-6419-1441-2CED62F241B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.TelegramImport.Contracts", "src\Contracts\Knot.Modules.TelegramImport.Contracts\Knot.Modules.TelegramImport.Contracts.csproj", "{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Messaging", "src\Contracts\Messaging\Knot.Contracts.Messaging.csproj", "{87048157-DF94-49E6-A34F-7DEF3255FA35}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Modules.WebRtc.Contracts", "src\Contracts\Knot.Modules.WebRtc.Contracts\Knot.Modules.WebRtc.Contracts.csproj", "{623330CA-6CA5-4B74-A921-DEAE8002FCC5}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiles", "Profiles", "{0286CA1A-73E9-C153-D97B-31BA60AC101B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Profiles", "src\Contracts\Profiles\Knot.Contracts.Profiles.csproj", "{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Relations", "Relations", "{319B016B-E46C-7232-249F-DBE50922C757}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Relations", "src\Contracts\Relations\Knot.Contracts.Relations.csproj", "{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Settings", "Settings", "{C91F5B42-26A0-36B8-1C54-AE965E022F68}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Settings", "src\Contracts\Settings\Knot.Contracts.Settings.csproj", "{338C69EA-F921-41B3-BB6C-116AADEBF356}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Storage", "Storage", "{6F45E82C-238A-FDE4-59E5-CCCD65D77EB8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Storage", "src\Contracts\Storage\Knot.Contracts.Storage.csproj", "{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Stories", "Stories", "{3DE423CC-7CB5-260E-2A62-D5E89000EF8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.Stories", "src\Contracts\Stories\Knot.Contracts.Stories.csproj", "{613354F0-3B35-4406-8250-C8E88A0DECF6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TelegramImport", "TelegramImport", "{5C1B4B87-5A65-F9C7-EAA3-6456BCBFD6EC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.TelegramImport", "src\Contracts\TelegramImport\Knot.Contracts.TelegramImport.csproj", "{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebRtc", "WebRtc", "{6DD751EB-CB14-7F42-4B4B-7E4DCC49705A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Knot.Contracts.WebRtc", "src\Contracts\WebRtc\Knot.Contracts.WebRtc.csproj", "{D939680D-864D-4FED-A81D-8F30EE6A97A0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -629,162 +655,162 @@ Global
{6BD8DC02-2270-4276-952E-E34E973A1237}.Release|x64.Build.0 = Release|Any CPU
{6BD8DC02-2270-4276-952E-E34E973A1237}.Release|x86.ActiveCfg = Release|Any CPU
{6BD8DC02-2270-4276-952E-E34E973A1237}.Release|x86.Build.0 = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|x64.Build.0 = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Debug|x86.Build.0 = Debug|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|Any CPU.Build.0 = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|x64.ActiveCfg = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|x64.Build.0 = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|x86.ActiveCfg = Release|Any CPU
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF}.Release|x86.Build.0 = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|x64.ActiveCfg = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|x64.Build.0 = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|x86.ActiveCfg = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Debug|x86.Build.0 = Debug|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|Any CPU.Build.0 = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|x64.ActiveCfg = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|x64.Build.0 = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|x86.ActiveCfg = Release|Any CPU
{E8C0F163-735D-44A2-B684-673A0B0D7D2A}.Release|x86.Build.0 = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|x64.ActiveCfg = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|x64.Build.0 = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|x86.ActiveCfg = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Debug|x86.Build.0 = Debug|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|Any CPU.Build.0 = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|x64.ActiveCfg = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|x64.Build.0 = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|x86.ActiveCfg = Release|Any CPU
{65E67218-A02C-4C42-8B60-6FDAB737E613}.Release|x86.Build.0 = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|x64.ActiveCfg = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|x64.Build.0 = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|x86.ActiveCfg = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Debug|x86.Build.0 = Debug|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|Any CPU.Build.0 = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|x64.ActiveCfg = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|x64.Build.0 = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|x86.ActiveCfg = Release|Any CPU
{7226D94C-B9A5-41D7-9E59-50A68F39EE78}.Release|x86.Build.0 = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|x64.ActiveCfg = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|x64.Build.0 = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Debug|x86.Build.0 = Debug|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|Any CPU.Build.0 = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|x64.ActiveCfg = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|x64.Build.0 = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|x86.ActiveCfg = Release|Any CPU
{4AC0C433-475F-4B0C-B160-E4F33779E3CB}.Release|x86.Build.0 = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|x64.ActiveCfg = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|x64.Build.0 = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Debug|x86.Build.0 = Debug|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|Any CPU.Build.0 = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|x64.ActiveCfg = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|x64.Build.0 = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|x86.ActiveCfg = Release|Any CPU
{9D86914A-43A8-4451-BEFD-092ABFF793D6}.Release|x86.Build.0 = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|x64.ActiveCfg = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|x64.Build.0 = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|x86.ActiveCfg = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Debug|x86.Build.0 = Debug|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|Any CPU.Build.0 = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|x64.ActiveCfg = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|x64.Build.0 = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|x86.ActiveCfg = Release|Any CPU
{1DC69DD3-3348-4375-844C-D44A760D50EC}.Release|x86.Build.0 = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|x64.ActiveCfg = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|x64.Build.0 = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|x86.ActiveCfg = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Debug|x86.Build.0 = Debug|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|Any CPU.Build.0 = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|x64.ActiveCfg = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|x64.Build.0 = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|x86.ActiveCfg = Release|Any CPU
{352A455F-AC3F-4D34-BADA-574BF83E131C}.Release|x86.Build.0 = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|x64.ActiveCfg = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|x64.Build.0 = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|x86.ActiveCfg = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Debug|x86.Build.0 = Debug|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|Any CPU.Build.0 = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|x64.ActiveCfg = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|x64.Build.0 = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|x86.ActiveCfg = Release|Any CPU
{D10F0FA0-A682-42D4-A23F-46094D14A8F6}.Release|x86.Build.0 = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|x64.ActiveCfg = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|x64.Build.0 = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|x86.ActiveCfg = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Debug|x86.Build.0 = Debug|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|Any CPU.Build.0 = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|x64.ActiveCfg = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|x64.Build.0 = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|x86.ActiveCfg = Release|Any CPU
{F57F6152-A359-4BB5-AC01-5531C85EE47A}.Release|x86.Build.0 = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|x64.ActiveCfg = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|x64.Build.0 = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|x86.ActiveCfg = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Debug|x86.Build.0 = Debug|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|Any CPU.Build.0 = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|x64.ActiveCfg = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|x64.Build.0 = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|x86.ActiveCfg = Release|Any CPU
{32631ED6-956A-4572-AD7A-B8D0ECE26C78}.Release|x86.Build.0 = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|x64.ActiveCfg = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|x64.Build.0 = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Debug|x86.Build.0 = Debug|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|Any CPU.Build.0 = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|x64.ActiveCfg = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|x64.Build.0 = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|x86.ActiveCfg = Release|Any CPU
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5}.Release|x86.Build.0 = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|x64.ActiveCfg = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|x64.Build.0 = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|x86.ActiveCfg = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Debug|x86.Build.0 = Debug|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|Any CPU.Build.0 = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|x64.ActiveCfg = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|x64.Build.0 = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|x86.ActiveCfg = Release|Any CPU
{623330CA-6CA5-4B74-A921-DEAE8002FCC5}.Release|x86.Build.0 = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|x64.ActiveCfg = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|x64.Build.0 = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Debug|x86.Build.0 = Debug|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|Any CPU.Build.0 = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|x64.ActiveCfg = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|x64.Build.0 = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|x86.ActiveCfg = Release|Any CPU
{D3C7D267-5646-4907-A451-E7CFA853BBF5}.Release|x86.Build.0 = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|x64.ActiveCfg = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|x64.Build.0 = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|x86.ActiveCfg = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Debug|x86.Build.0 = Debug|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|Any CPU.Build.0 = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|x64.ActiveCfg = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|x64.Build.0 = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|x86.ActiveCfg = Release|Any CPU
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4}.Release|x86.Build.0 = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|x64.ActiveCfg = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|x64.Build.0 = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|x86.ActiveCfg = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Debug|x86.Build.0 = Debug|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|Any CPU.Build.0 = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|x64.ActiveCfg = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|x64.Build.0 = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|x86.ActiveCfg = Release|Any CPU
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7}.Release|x86.Build.0 = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|x64.ActiveCfg = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|x64.Build.0 = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|x86.ActiveCfg = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Debug|x86.Build.0 = Debug|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|Any CPU.Build.0 = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|x64.ActiveCfg = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|x64.Build.0 = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|x86.ActiveCfg = Release|Any CPU
{62A821F2-F296-4888-8AB1-A80ED514AC08}.Release|x86.Build.0 = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|x64.ActiveCfg = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|x64.Build.0 = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|x86.ActiveCfg = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Debug|x86.Build.0 = Debug|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|Any CPU.Build.0 = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|x64.ActiveCfg = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|x64.Build.0 = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|x86.ActiveCfg = Release|Any CPU
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4}.Release|x86.Build.0 = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|Any CPU.Build.0 = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|x64.ActiveCfg = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|x64.Build.0 = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|x86.ActiveCfg = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Debug|x86.Build.0 = Debug|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|Any CPU.Build.0 = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|x64.ActiveCfg = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|x64.Build.0 = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|x86.ActiveCfg = Release|Any CPU
{87048157-DF94-49E6-A34F-7DEF3255FA35}.Release|x86.Build.0 = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|x64.ActiveCfg = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|x64.Build.0 = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|x86.ActiveCfg = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Debug|x86.Build.0 = Debug|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|Any CPU.Build.0 = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|x64.ActiveCfg = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|x64.Build.0 = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|x86.ActiveCfg = Release|Any CPU
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D}.Release|x86.Build.0 = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|x64.ActiveCfg = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|x64.Build.0 = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|x86.ActiveCfg = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Debug|x86.Build.0 = Debug|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|Any CPU.Build.0 = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|x64.ActiveCfg = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|x64.Build.0 = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|x86.ActiveCfg = Release|Any CPU
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817}.Release|x86.Build.0 = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|Any CPU.Build.0 = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|x64.ActiveCfg = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|x64.Build.0 = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|x86.ActiveCfg = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Debug|x86.Build.0 = Debug|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|Any CPU.ActiveCfg = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|Any CPU.Build.0 = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|x64.ActiveCfg = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|x64.Build.0 = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|x86.ActiveCfg = Release|Any CPU
{338C69EA-F921-41B3-BB6C-116AADEBF356}.Release|x86.Build.0 = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|Any CPU.Build.0 = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|x64.ActiveCfg = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|x64.Build.0 = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|x86.ActiveCfg = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Debug|x86.Build.0 = Debug|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|Any CPU.ActiveCfg = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|Any CPU.Build.0 = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|x64.ActiveCfg = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|x64.Build.0 = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|x86.ActiveCfg = Release|Any CPU
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288}.Release|x86.Build.0 = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|x64.ActiveCfg = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|x64.Build.0 = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|x86.ActiveCfg = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Debug|x86.Build.0 = Debug|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|Any CPU.Build.0 = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|x64.ActiveCfg = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|x64.Build.0 = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|x86.ActiveCfg = Release|Any CPU
{613354F0-3B35-4406-8250-C8E88A0DECF6}.Release|x86.Build.0 = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|x64.ActiveCfg = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|x64.Build.0 = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|x86.ActiveCfg = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Debug|x86.Build.0 = Debug|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|Any CPU.Build.0 = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|x64.ActiveCfg = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|x64.Build.0 = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|x86.ActiveCfg = Release|Any CPU
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA}.Release|x86.Build.0 = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|x64.ActiveCfg = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|x64.Build.0 = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|x86.ActiveCfg = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Debug|x86.Build.0 = Debug|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|Any CPU.Build.0 = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|x64.ActiveCfg = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|x64.Build.0 = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|x86.ActiveCfg = Release|Any CPU
{D939680D-864D-4FED-A81D-8F30EE6A97A0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -873,18 +899,31 @@ Global
{3A48F700-9635-2216-D291-85337CE5D869} = {553D81D4-666B-BE26-75F9-480CB214ACEE}
{6BD8DC02-2270-4276-952E-E34E973A1237} = {3A48F700-9635-2216-D291-85337CE5D869}
{FFBE31B8-50B9-B415-22BC-2F92C97CADA3} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{1D50E7AA-2378-4114-A3C3-E351D46FB8BF} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{E8C0F163-735D-44A2-B684-673A0B0D7D2A} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{65E67218-A02C-4C42-8B60-6FDAB737E613} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{7226D94C-B9A5-41D7-9E59-50A68F39EE78} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{4AC0C433-475F-4B0C-B160-E4F33779E3CB} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{9D86914A-43A8-4451-BEFD-092ABFF793D6} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{1DC69DD3-3348-4375-844C-D44A760D50EC} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{352A455F-AC3F-4D34-BADA-574BF83E131C} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D10F0FA0-A682-42D4-A23F-46094D14A8F6} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{F57F6152-A359-4BB5-AC01-5531C85EE47A} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{32631ED6-956A-4572-AD7A-B8D0ECE26C78} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{7E22E87D-78D2-411D-AC30-2F090C3F5ED5} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{623330CA-6CA5-4B74-A921-DEAE8002FCC5} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{1C8A9B45-FCC1-A5B3-3601-CB39D7CED4E3} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D3C7D267-5646-4907-A451-E7CFA853BBF5} = {1C8A9B45-FCC1-A5B3-3601-CB39D7CED4E3}
{28F8F726-0D9B-F051-A252-088B861055C6} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D65EE034-84B9-4EBE-BC1F-5606AB4524A4} = {28F8F726-0D9B-F051-A252-088B861055C6}
{19B3F750-A3A3-3AEB-CE4F-46FB52BB3151} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{17B31CB0-F2C5-47A6-9BF2-C55403C97DC7} = {19B3F750-A3A3-3AEB-CE4F-46FB52BB3151}
{E97EBA1B-122C-1D64-94D9-187425FF5DF0} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{62A821F2-F296-4888-8AB1-A80ED514AC08} = {E97EBA1B-122C-1D64-94D9-187425FF5DF0}
{7555181C-EB04-A6C5-D475-6FC0320F57B5} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D0CE2D52-EC1C-444E-A5C5-79813E1814D4} = {7555181C-EB04-A6C5-D475-6FC0320F57B5}
{3E835F76-AFEE-6419-1441-2CED62F241B2} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{87048157-DF94-49E6-A34F-7DEF3255FA35} = {3E835F76-AFEE-6419-1441-2CED62F241B2}
{0286CA1A-73E9-C153-D97B-31BA60AC101B} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D28F8DB7-077E-47F6-B07D-BB93AF950A0D} = {0286CA1A-73E9-C153-D97B-31BA60AC101B}
{319B016B-E46C-7232-249F-DBE50922C757} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{75CDF4D0-53B2-4FCE-9C2D-06940FD2E817} = {319B016B-E46C-7232-249F-DBE50922C757}
{C91F5B42-26A0-36B8-1C54-AE965E022F68} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{338C69EA-F921-41B3-BB6C-116AADEBF356} = {C91F5B42-26A0-36B8-1C54-AE965E022F68}
{6F45E82C-238A-FDE4-59E5-CCCD65D77EB8} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{531F88C6-B9A5-4BF6-A121-AAA95DE4A288} = {6F45E82C-238A-FDE4-59E5-CCCD65D77EB8}
{3DE423CC-7CB5-260E-2A62-D5E89000EF8F} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{613354F0-3B35-4406-8250-C8E88A0DECF6} = {3DE423CC-7CB5-260E-2A62-D5E89000EF8F}
{5C1B4B87-5A65-F9C7-EAA3-6456BCBFD6EC} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{A47CCC4C-8B19-4A12-8B05-BE4AAEABB1BA} = {5C1B4B87-5A65-F9C7-EAA3-6456BCBFD6EC}
{6DD751EB-CB14-7F42-4B4B-7E4DCC49705A} = {FFBE31B8-50B9-B415-22BC-2F92C97CADA3}
{D939680D-864D-4FED-A81D-8F30EE6A97A0} = {6DD751EB-CB14-7F42-4B4B-7E4DCC49705A}
EndGlobalSection
EndGlobal

View File

@@ -1,7 +1,7 @@
using FluentAssertions;
using Knot.Modules.Admin.Application.Admin.Commands;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Shared.Kernel;
using NSubstitute;
using Xunit;

View File

@@ -1,8 +1,8 @@
using FluentAssertions;
using NSubstitute;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Modules.Auth.Application.Users.Login;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Shared.Kernel;
using Knot.Modules.Auth.Application.Users.Auth;
using Xunit;

View File

@@ -12,8 +12,8 @@ using Knot.Modules.Conversations.Domain;
using Knot.Modules.Messaging.Domain;
using Knot.Modules.Conversations.Application.Abstractions;
using Knot.Modules.Conversations.Application.Messages.Send;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Conversations.UnitTests.Messages;
@@ -34,7 +34,7 @@ public class SendMessageCommandHandlerTests
_mediator = Substitute.For<IMediator>();
_messagesSettings = Substitute.For<IMessagesSettings>();
var config = new Knot.Modules.Settings.Contracts.Application.DTOs.MessagesConfig();
var config = new Knot.Contracts.Settings.Application.DTOs.MessagesConfig();
_messagesSettings.Current.Returns(config);
_handler = new SendMessageCommandHandler(_chatRepository, _messageRepository, _unitOfWork, _mediator, _messagesSettings);

View File

@@ -2,8 +2,8 @@ using FluentAssertions;
using Knot.Modules.Stories.Application.Stories.Commands.CreateStory;
using Knot.Modules.Stories.Domain;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Modules.Stories.Application.Abstractions;
using NSubstitute;
using Xunit;

View File

@@ -1,7 +1,7 @@
using FluentAssertions;
using Knot.Modules.Profiles.Application.Profiles.UpdateProfile;
using Knot.Modules.Profiles.Contracts.Domain;
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using Knot.Contracts.Profiles.Domain;
using Knot.Contracts.Profiles.Application.DTOs;
using Knot.Shared.Kernel;
using NSubstitute;
using Xunit;

View File

@@ -1,6 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
namespace Knot.Modules.Auth.Contracts.Application.Abstractions;
namespace Knot.Contracts.Auth.Application.Abstractions;
public interface IAuthDbContext
{

View File

@@ -1,7 +1,7 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Shared.Kernel;
namespace Knot.Modules.Auth.Contracts.Application.Abstractions;
namespace Knot.Contracts.Auth.Application.Abstractions;
public interface IAuthUnitOfWork : IUnitOfWork
{

View File

@@ -1,8 +1,9 @@
namespace Knot.Modules.Auth.Contracts.Application.Abstractions;
namespace Knot.Contracts.Auth.Application.Abstractions;
public interface IJwtTokenProvider
{
string GenerateAccessToken(Guid userId, string username);
string GenerateRefreshToken();
string Generate(Guid userId, string username, string displayName, string? avatar);
string Generate(Domain.UserContract user);
}

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
namespace Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
namespace Knot.Contracts.Auth.Application.Auth.DTOs;
public static class AuthErrors
{

View File

@@ -1,4 +1,4 @@
namespace Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
namespace Knot.Contracts.Auth.Application.Auth.DTOs;
public class AuthResponseDto
{

View File

@@ -0,0 +1,6 @@
using Knot.Contracts.Auth.Domain;
using MediatR;
namespace Knot.Contracts.Auth.Application.Users.GetMe;
public record GetMeQuery() : IRequest<UserContract>;

View File

@@ -1,8 +1,8 @@
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Auth.Contracts.Application.Users.Login;
namespace Knot.Contracts.Auth.Application.Users.Login;
public record LoginUserCommand(
string Username,

View File

@@ -0,0 +1,14 @@
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Contracts.Auth.Application.Users.Register;
public record RegisterUserCommand(
string Username,
string Password,
string DisplayName,
string? Email,
string? Bio
) : IRequest<Result<AuthResponseDto>>;

View File

@@ -1,4 +1,4 @@
namespace Knot.Modules.Auth.Contracts.Domain;
namespace Knot.Contracts.Auth.Domain;
public interface IUserRepository
{

View File

@@ -1,4 +1,4 @@
namespace Knot.Modules.Auth.Contracts.Domain;
namespace Knot.Contracts.Auth.Domain;
public class UserContract
{

View File

@@ -12,6 +12,7 @@
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -12,6 +12,7 @@
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -12,6 +12,7 @@
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -12,6 +12,7 @@
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -1,9 +0,0 @@
using Microsoft.EntityFrameworkCore;
namespace Knot.Modules.Auth.Contracts.Application.Abstractions;
public interface IIdentityDbContext
{
DbSet<T> Set<T>() where T : class;
Task<int> SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -1,9 +0,0 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Shared.Kernel;
namespace Knot.Modules.Auth.Contracts.Application.Abstractions;
public interface IIdentityUnitOfWork : IUnitOfWork
{
IUserRepository UserRepository { get; }
}

View File

@@ -1,6 +0,0 @@
using Knot.Modules.Auth.Contracts.Domain;
using MediatR;
namespace Knot.Modules.Auth.Contracts.Application.Users.GetMe;
public record GetMeQuery() : IRequest<UserContract>;

View File

@@ -1,14 +0,0 @@
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Auth.Contracts.Application.Users.Register;
public record RegisterUserCommand(
string Username,
string Password,
string DisplayName,
string? PhoneNumber,
bool IsBot = false
) : IRequest<Result<AuthResponseDto>>;

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,6 +0,0 @@
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.Profiles.Search;
public record SearchProfilesQuery(string Query, int Limit = 20) : IRequest<List<UserProfileDto>>;

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
namespace Knot.Modules.Profiles.Contracts.Application.DTOs;
namespace Knot.Contracts.Profiles.Application.DTOs;
public static class ProfilesErrors
{

View File

@@ -1,6 +1,6 @@
using MediatR;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.DTOs;
namespace Knot.Contracts.Profiles.Application.DTOs;
public record SearchProfilesRequest(string Query, int Limit = 20) : IRequest<List<UserProfileDto>>;

View File

@@ -1,4 +1,4 @@
namespace Knot.Modules.Profiles.Contracts.Application.DTOs;
namespace Knot.Contracts.Profiles.Application.DTOs;
public class UserProfileDto
{

View File

@@ -1,7 +1,7 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.Profiles.Avatar;
namespace Knot.Contracts.Profiles.Application.Profiles.Avatar;
public record UploadAvatarCommand(Stream Stream, string FileName) : IRequest<Result<string>>;

View File

@@ -1,8 +1,8 @@
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using Knot.Contracts.Profiles.Application.DTOs;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.Profiles.GetUser;
namespace Knot.Contracts.Profiles.Application.Profiles.GetUser;
public record GetProfileQuery(Guid UserId) : IRequest<Result<UserProfileDto>>;

View File

@@ -0,0 +1,6 @@
using Knot.Contracts.Profiles.Application.DTOs;
using MediatR;
namespace Knot.Contracts.Profiles.Application.Profiles.Search;
public record SearchProfilesQuery(string Query, int Limit = 20) : IRequest<List<UserProfileDto>>;

View File

@@ -1,8 +1,8 @@
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using Knot.Contracts.Profiles.Application.DTOs;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.Profiles.UpdateProfile;
namespace Knot.Contracts.Profiles.Application.Profiles.UpdateProfile;
public record UpdateProfileCommand(
string? DisplayName,

View File

@@ -1,8 +1,8 @@
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using Knot.Contracts.Profiles.Application.DTOs;
using Knot.Shared.Kernel;
using MediatR;
namespace Knot.Modules.Profiles.Contracts.Application.Profiles.UpdateSettings;
namespace Knot.Contracts.Profiles.Application.Profiles.UpdateSettings;
public record UpdateSettingsCommand(
bool? ShowLastSeen,

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel.Storage;
using Knot.Shared.Kernel.Storage;
namespace Knot.Modules.Profiles.Contracts.Domain;
namespace Knot.Contracts.Profiles.Domain;
public interface IAvatarStorageService
{

View File

@@ -1,7 +1,7 @@
using Knot.Modules.Profiles.Contracts.Application.DTOs;
using Knot.Contracts.Profiles.Application.DTOs;
using Knot.Shared.Kernel;
namespace Knot.Modules.Profiles.Contracts.Domain;
namespace Knot.Contracts.Profiles.Domain;
public interface IProfileRepository
{

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
namespace Knot.Modules.Profiles.Contracts.Domain;
namespace Knot.Contracts.Profiles.Domain;
public interface IProfilesUnitOfWork : IUnitOfWork
{

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -1,6 +1,6 @@
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Settings.Contracts.Application.Abstractions;
namespace Knot.Contracts.Settings.Application.Abstractions;
public interface ISettingsService
{

View File

@@ -1,6 +1,6 @@
using System.Collections.Generic;
using System.Collections.Generic;
namespace Knot.Modules.Settings.Contracts.Application.DTOs;
namespace Knot.Contracts.Settings.Application.DTOs;
public class SystemConfig
{

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="MediatR" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.4" />
</ItemGroup>
</Project>

View File

@@ -190,7 +190,7 @@ using (var scope = app.Services.CreateScope())
Knot.Modules.Messaging.Infrastructure.Persistence.Mongo.EncryptedStringSerializer.EncryptionService = encryptionService;
// Initialize Global Settings Cache
var settingsService = scope.ServiceProvider.GetRequiredService<Knot.Modules.Settings.Contracts.Application.Abstractions.ISettingsService>();
var settingsService = scope.ServiceProvider.GetRequiredService<Knot.Contracts.Settings.Application.Abstractions.ISettingsService>();
if (settingsService is Knot.Modules.Settings.Infrastructure.Configuration.SettingsService concreteSettings)
{
concreteSettings.Initialize();

View File

@@ -1,5 +1,5 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Shared.Kernel;
using System;
using System.Threading;

View File

@@ -1,5 +1,5 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Shared.Kernel;
using System;
using System.Threading;

View File

@@ -1,6 +1,6 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Modules.Admin.Application.Admin.DTOs;
using System;
using System.Threading;

View File

@@ -2,8 +2,8 @@ using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Modules.Klipy.Application.Abstractions;
namespace Knot.Modules.Admin.Application.Admin.Commands.TestKlipy;

View File

@@ -4,8 +4,8 @@ using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using System.Security.Cryptography;
namespace Knot.Modules.Admin.Application.Admin.Commands;

View File

@@ -4,8 +4,8 @@ using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Admin.Application.Admin.Queries;

View File

@@ -1,5 +1,5 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Modules.Admin.Application.Admin.DTOs;
using Knot.Modules.Messaging.Domain;
using System;

View File

@@ -1,4 +1,4 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Modules.Admin.Application.Admin.DTOs;
using System;
using System.Collections.Generic;

View File

@@ -1,7 +1,7 @@
using System.Collections.Generic;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Admin.Domain.Events;

View File

@@ -7,10 +7,11 @@
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
<ProjectReference Include="..\..\Shared\Knot.Shared.Infrastructure\Knot.Shared.Infrastructure.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Auth.Contracts\Knot.Modules.Auth.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Profiles.Contracts\Knot.Modules.Profiles.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Conversations.Contracts\Knot.Modules.Conversations.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Settings.Contracts\Knot.Modules.Settings.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Auth\Knot.Contracts.Auth.csproj" />
<ProjectReference Include="..\..\Contracts\Profiles\Knot.Contracts.Profiles.csproj" />
<ProjectReference Include="..\..\Contracts\Conversations\Knot.Contracts.Conversations.csproj" />
<ProjectReference Include="..\..\Contracts\Settings\Knot.Contracts.Settings.csproj" />
<ProjectReference Include="..\Auth\Knot.Modules.Auth.csproj" />
<ProjectReference Include="..\Conversations\Knot.Modules.Conversations.csproj" />
<ProjectReference Include="..\Stories\Knot.Modules.Stories.csproj" />
<ProjectReference Include="..\Klipy\Knot.Modules.Klipy.csproj" />

View File

@@ -1,8 +1,8 @@
using Carter;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Modules.Auth.Application.Users.Register;
using MediatR;
using Knot.Modules.Admin.Application.Admin.Queries;

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Auth.DTOs;
namespace Knot.Modules.Auth.Application.Users.GetMe;

View File

@@ -1,6 +1,6 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Shared.Kernel;
using BCrypt.Net;

View File

@@ -1,16 +1,16 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Contracts.Application.Auth.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Application.Auth.DTOs;
using Knot.Modules.Auth.Domain;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using BCrypt.Net;
namespace Knot.Modules.Auth.Application.Users.Register;
/// <summary>
/// Команда для регистрации нового пользователя.
/// Êîìàíäà äëÿ ðåãèñòðàöèè íîâîãî ïîëüçîâàòåëÿ.
/// </summary>
public sealed record RegisterUserCommand(
string Username,
@@ -20,7 +20,7 @@ public sealed record RegisterUserCommand(
string? Bio) : ICommand<AuthResponseDto>;
/// <summary>
/// Обработчик команды регистрации.
/// Îáðàáîò÷èê êîìàíäû ðåãèñòðàöèè.
/// </summary>
internal sealed class RegisterUserCommandHandler : ICommandHandler<RegisterUserCommand, AuthResponseDto>
{
@@ -48,16 +48,16 @@ internal sealed class RegisterUserCommandHandler : ICommandHandler<RegisterUserC
return Result.Failure<AuthResponseDto>(AuthErrors.IdentityRegistrationDisabled);
}
// 1. Проверка уникальности username
// 1. Ïðîâåðêà óíèêàëüíîñòè username
if (!await _userRepository.IsUsernameUniqueAsync(request.Username, cancellationToken))
{
return Result.Failure<AuthResponseDto>(AuthErrors.IdentityUsernameNotUnique);
}
// 2. Хеширование пароля
// 2. Õåøèðîâàíèå ïàðîëÿ
string passwordHash = BCrypt.Net.BCrypt.HashPassword(request.Password);
// 3. Создание сущности
// 3. Ñîçäàíèå ñóùíîñòè
var user = User.Create(
request.Username,
passwordHash,
@@ -65,7 +65,7 @@ internal sealed class RegisterUserCommandHandler : ICommandHandler<RegisterUserC
request.Email,
request.Bio);
// 4. Сохранение - используем метод с Domain User
// 4. Ñîõðàíåíèå - èñïîëüçóåì ìåòîä ñ Domain User
var repoWithDomainUserAdd = _userRepository as Infrastructure.Persistence.UserRepository;
repoWithDomainUserAdd?.Add(user);

View File

@@ -2,9 +2,9 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore;
using Knot.Modules.Auth.Infrastructure.Persistence;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Modules.Auth.Infrastructure.Authentication;
using Knot.Shared.Kernel;

View File

@@ -1,11 +1,11 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
using Knot.Shared.Kernel.Events;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
namespace Knot.Modules.Auth.Domain;
/// <summary>
/// Сущность пользователя в контексте идентификации (Identity).
/// Ñóùíîñòü ïîëüçîâàòåëÿ â êîíòåêñòå èäåíòèôèêàöèè (Identity).
/// </summary>
public sealed class User : AggregateRoot<Guid>
{
@@ -44,7 +44,7 @@ public sealed class User : AggregateRoot<Guid>
}
/// <summary>
/// Фабричный метод для создания нового пользователя.
/// Ôàáðè÷íûé ìåòîä äëÿ ñîçäàíèÿ íîâîãî ïîëüçîâàòåëÿ.
/// </summary>
public static User Create(string username, string passwordHash, string displayName, string? email = null, string? bio = null)
{
@@ -54,7 +54,7 @@ public sealed class User : AggregateRoot<Guid>
}
/// <summary>
/// Создает "теневого" пользователя для контакта с другого сервера.
/// Ñîçäàåò "òåíåâîãî" ïîëüçîâàòåëÿ äëÿ êîíòàêòà ñ äðóãîãî ñåðâåðà.
/// </summary>
public static User CreateExternal(Guid id, string username, string displayName, string domain, string? avatar = null)
{

View File

@@ -3,8 +3,9 @@ using System.Security.Claims;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using DomainUser = Knot.Modules.Auth.Domain.User;
namespace Knot.Modules.Auth.Infrastructure.Authentication;
@@ -75,7 +76,7 @@ internal sealed class JwtTokenProvider : IJwtTokenProvider
return new JwtSecurityTokenHandler().WriteToken(token);
}
public string Generate(User user)
public string Generate(UserContract user)
{
return Generate(user.Id, user.Username, user.DisplayName, user.Avatar);
}

View File

@@ -1,8 +1,8 @@
using MediatR;
using MediatR;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Shared.Kernel;
using Knot.Shared.Kernel.Security;
using DomainUser = Knot.Modules.Auth.Domain.User;

View File

@@ -1,5 +1,5 @@
using Microsoft.EntityFrameworkCore;
using Knot.Modules.Auth.Contracts.Domain;
using Microsoft.EntityFrameworkCore;
using Knot.Contracts.Auth.Domain;
using Knot.Modules.Auth.Domain;
namespace Knot.Modules.Auth.Infrastructure.Persistence;

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Domain;
namespace Knot.Modules.Auth.Infrastructure.Services;

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
@@ -8,9 +8,9 @@
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Auth.Contracts\Knot.Modules.Auth.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Profiles.Contracts\Knot.Modules.Profiles.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Settings.Contracts\Knot.Modules.Settings.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Auth\Knot.Contracts.Auth.csproj" />
<ProjectReference Include="..\..\Contracts\Profiles\Knot.Contracts.Profiles.csproj" />
<ProjectReference Include="..\..\Contracts\Settings\Knot.Contracts.Settings.csproj" />
</ItemGroup>
<ItemGroup>
@@ -33,6 +33,3 @@
</ItemGroup>
</Project>

View File

@@ -26,7 +26,7 @@ namespace Knot.Modules.Auth.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Knot.Modules.Auth.Contracts.Domain.User", b =>
modelBuilder.Entity("Knot.Contracts.Auth.Domain.User", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()

View File

@@ -27,7 +27,7 @@ namespace Knot.Modules.Auth.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Knot.Modules.Auth.Contracts.Domain.User", b =>
modelBuilder.Entity("Knot.Contracts.Auth.Domain.User", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()

View File

@@ -26,7 +26,7 @@ namespace Knot.Modules.Auth.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Knot.Modules.Auth.Contracts.Domain.User", b =>
modelBuilder.Entity("Knot.Contracts.Auth.Domain.User", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()

View File

@@ -23,7 +23,7 @@ namespace Knot.Modules.Auth.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Knot.Modules.Auth.Contracts.Domain.User", b =>
modelBuilder.Entity("Knot.Contracts.Auth.Domain.User", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()

View File

@@ -1,6 +1,6 @@
using Knot.Modules.Conversations.Domain;
using Knot.Modules.Conversations.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Shared.Kernel;
using MediatR;

View File

@@ -2,7 +2,7 @@ using Knot.Modules.Messaging.Application.Abstractions;
using Knot.Modules.Messaging.Domain;
using Knot.Modules.Conversations.Domain;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Modules.Conversations.Application.Abstractions;
namespace Knot.Modules.Conversations.Application.Messages.Send;

View File

@@ -6,8 +6,8 @@ using System.Threading.Tasks;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Shared.Kernel.Storage;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Modules.Conversations.Application.DTOs;
namespace Knot.Modules.Conversations.Application.Messages.UploadFile;

View File

@@ -1,5 +1,5 @@
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Auth.Contracts.Application.Abstractions;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Auth.Application.Abstractions;
using Knot.Modules.Conversations.Domain;
using Knot.Modules.Messaging.Domain;
using Knot.Shared.Kernel;

View File

@@ -1,8 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Settings.Contracts\Knot.Modules.Settings.Contracts.csproj" />
<ProjectReference Include="..\..\Shared\Knot.Shared.Infrastructure\Knot.Shared.Infrastructure.csproj" />
<ProjectReference Include="..\..\Contracts\Settings\Knot.Contracts.Settings.csproj" />
<ProjectReference Include="..\Messaging\Knot.Modules.Messaging.csproj" />
<ProjectReference Include="..\Auth\Knot.Modules.Auth.csproj" />
</ItemGroup>
@@ -30,10 +37,4 @@
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -2,8 +2,8 @@ using Knot.Shared.Kernel.Constants;
using System.Security.Cryptography;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Host.Application.Federation.Commands;

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
@@ -8,11 +8,11 @@ using System.Threading.Tasks;
using MediatR;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Shared.Kernel;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Modules.Messaging.Application.Abstractions;
using Knot.Modules.Messaging.Domain;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Shared.Kernel.Constants;
namespace Host.Application.Federation.Commands;
@@ -52,7 +52,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
var packet = request.Packet;
// 1. Проверяем подпись отправителя
// 1. Ïðîâåðÿåì ïîäïèñü îòïðàâèòåëÿ
var senderConfig = settings.Federation.AllowedDomains.FirstOrDefault(d => d.IsEnabled && d.Domain.Equals(packet.SenderDomain, StringComparison.OrdinalIgnoreCase));
if (senderConfig == null || string.IsNullOrEmpty(senderConfig.PublicKey))
return Result.Failure(new Error("Federation.SenderNotAllowed", "Sender domain not in allowlist."));
@@ -67,7 +67,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
}
}
// 2. Расшифровываем IV своим Private Key
// 2. Ðàñøèôðîâûâàåì IV ñâîèì Private Key
byte[] aesKey;
byte[] aesIv;
using (var rsaDecrypt = RSA.Create())
@@ -82,7 +82,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
Buffer.BlockCopy(decryptedKeys, 32, aesIv, 0, 16);
}
// 3. Расшифровываем само сообщение (AES-256)
// 3. Ðàñøèôðîâûâàåì ñàìî ñîîáùåíèå (AES-256)
string plainText;
using (var aes = Aes.Create())
{
@@ -96,7 +96,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
}
}
// 4. Логика обработки типов сообщений
// 4. Ëîãèêà îáðàáîòêè òèïîâ ñîîáùåíèé
if (packet.Metadata.MessageType == "sync_capabilities")
{
var capabilities = JsonSerializer.Deserialize<RemoteCapabilities>(plainText);
@@ -119,7 +119,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
user.IsOnline = isOnline;
await _userRepository.UpdateAsync(user, cancellationToken);
// Уведомляем локальных пользователей через SignalR
// Óâåäîìëÿåì ëîêàëüíûõ ïîëüçîâàòåëåé ÷åðåç SignalR
await _notifier.NotifyNewMessageAsync(Guid.Empty, new { type = "presence_update", userId = user.Id, isOnline = user.IsOnline }, cancellationToken);
}
return Result.Success();
@@ -183,7 +183,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
if (packet.Metadata.MessageType == "poll" && !settings.Messages.AllowPolls)
return Result.Failure(new Error("Federation.PollsDisabled", "We do not accept polls."));
// 5. Сохранение в базу сообщений (MongoDB)
// 5. Ñîõðàíåíèå â áàçó ñîîáùåíèé (MongoDB)
var message = new TextMessage(
Guid.NewGuid(),
packet.Metadata.ChatId,
@@ -197,7 +197,7 @@ internal sealed class InboundFederationCommandHandler : ICommandHandler<InboundF
_messageRepository.Add(message);
// 6. Уведомление пользователя через SignalR
// 6. Óâåäîìëåíèå ïîëüçîâàòåëÿ ÷åðåç SignalR
await _notifier.NotifyNewMessageAsync(packet.Metadata.ChatId, message, cancellationToken);
return Result.Success();

View File

@@ -3,9 +3,9 @@ using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Knot.Shared.Kernel;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Auth.Domain;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using System.Linq;
namespace Host.Application.Federation.Commands;

View File

@@ -7,9 +7,9 @@ using Knot.Modules.Messaging.Domain;
using Knot.Modules.Federation.Application.Federation.Services;
using Knot.Modules.Conversations.Domain;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Contracts.Auth.Domain;
namespace Knot.Modules.Federation.Application.Federation.Events;

View File

@@ -7,9 +7,9 @@ using Knot.Modules.Messaging.Domain;
using Knot.Modules.Federation.Application.Federation.Services;
using Knot.Modules.Conversations.Domain;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Contracts.Auth.Domain;
namespace Knot.Modules.Federation.Application.Federation.Events;

View File

@@ -6,8 +6,8 @@ using MediatR;
using Knot.Modules.Settings.Domain.Events;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Modules.Federation.Application.Federation.Services;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Federation.Application.Federation.Events;

View File

@@ -1,21 +1,21 @@
using System;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Knot.Modules.Auth.Contracts.Domain;
using Knot.Contracts.Auth.Domain;
using Knot.Modules.Auth.Domain;
using Knot.Modules.Conversations.Domain;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Modules.Federation.Application.Federation.Services;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Knot.Modules.Federation.Application.Federation.Events;
/// <summary>
/// Обработчик изменения статуса пользователя.
/// Рассылает новый статус всем серверам, где у пользователя есть чаты.
/// Îáðàáîò÷èê èçìåíåíèÿ ñòàòóñà ïîëüçîâàòåëÿ.
/// Ðàññûëàåò íîâûé ñòàòóñ âñåì ñåðâåðàì, ãäå ó ïîëüçîâàòåëÿ åñòü ÷àòû.
/// </summary>
public sealed class UserStatusChangedDomainEventHandler : INotificationHandler<UserStatusChangedDomainEvent>
{
@@ -44,11 +44,11 @@ public sealed class UserStatusChangedDomainEventHandler : INotificationHandler<U
var settings = await _settingsService.GetSettingsAsync(cancellationToken);
if (!settings.Federation.Enabled) return;
// 1. Находим все чаты пользователя
// 1. Íàõîäèì âñå ÷àòû ïîëüçîâàòåëÿ
var userChats = await _chatRepository.GetUserChatsAsync(notification.UserId, cancellationToken);
if (!userChats.Any()) return;
// 2. Определяем уникальные внешние домены участников этих чатов
// 2. Îïðåäåëÿåì óíèêàëüíûå âíåøíèå äîìåíû ó÷àñòíèêîâ ýòèõ ÷àòîâ
var allMemberIds = userChats.SelectMany(c => c.Members.Select(m => m.UserId)).Distinct().ToList();
var members = await _userRepository.GetByIdsAsync(allMemberIds, cancellationToken);
@@ -60,7 +60,7 @@ public sealed class UserStatusChangedDomainEventHandler : INotificationHandler<U
if (!externalDomains.Any()) return;
// 3. Формируем пакет статуса
// 3. Ôîðìèðóåì ïàêåò ñòàòóñà
var statusData = new {
notification.IsOnline,
notification.LastSeen
@@ -75,7 +75,7 @@ public sealed class UserStatusChangedDomainEventHandler : INotificationHandler<U
DateTime.UtcNow
);
// 4. Рассылка по доменам
// 4. Ðàññûëêà ïî äîìåíàì
foreach (var domain in externalDomains)
{
var packetResult = await _packetService.PreparePacketAsync(payload, metadata, domain, cancellationToken);

View File

@@ -8,8 +8,8 @@ using System.Threading;
using System.Threading.Tasks;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Shared.Kernel.Security;
namespace Knot.Modules.Federation.Application.Federation.Services;

View File

@@ -8,8 +8,8 @@ using System.Threading;
using System.Threading.Tasks;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Shared.Kernel.Security;
namespace Knot.Modules.Federation.Infrastructure.Services;

View File

@@ -7,11 +7,12 @@
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
<ProjectReference Include="..\..\Shared\Knot.Shared.Infrastructure\Knot.Shared.Infrastructure.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Auth.Contracts\Knot.Modules.Auth.Contracts.csproj" />
<ProjectReference Include="..\Conversations\Knot.Modules.Conversations.csproj" />
<ProjectReference Include="..\..\Contracts\Auth\Knot.Contracts.Auth.csproj" />
<ProjectReference Include="..\..\Contracts\Settings\Knot.Contracts.Settings.csproj" />
<ProjectReference Include="..\Auth\Knot.Modules.Auth.csproj" />
<ProjectReference Include="..\Conversations\Knot.Modules.Conversations.csproj" />
<ProjectReference Include="..\Messaging\Knot.Modules.Messaging.csproj" />
<ProjectReference Include="..\Stories\Knot.Modules.Stories.csproj" />
<ProjectReference Include="..\Settings\Knot.Modules.Settings.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Carter" Version="10.0.0" />

View File

@@ -9,8 +9,8 @@ using System;
using Host.Application.Federation.Commands;
using Knot.Modules.Federation.Application.Abstractions;
using Knot.Shared.Kernel.Storage;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
namespace Host.Endpoints;

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Shared.Kernel.Constants;
using Microsoft.Extensions.Caching.Memory;
using System;

View File

@@ -1,6 +1,6 @@
using Knot.Shared.Kernel;
using Knot.Modules.Settings.Contracts.Application.Abstractions;
using Knot.Modules.Settings.Contracts.Application.DTOs;
using Knot.Contracts.Settings.Application.Abstractions;
using Knot.Contracts.Settings.Application.DTOs;
using Knot.Shared.Kernel.Constants;
using Microsoft.Extensions.Caching.Memory;
using System;

View File

@@ -7,7 +7,7 @@
<ItemGroup>
<ProjectReference Include="..\..\Shared\Knot.Shared.Kernel\Knot.Shared.Kernel.csproj" />
<ProjectReference Include="..\..\Shared\Knot.Shared.Infrastructure\Knot.Shared.Infrastructure.csproj" />
<ProjectReference Include="..\..\Contracts\Knot.Modules.Settings.Contracts\Knot.Modules.Settings.Contracts.csproj" />
<ProjectReference Include="..\..\Contracts\Settings\Knot.Contracts.Settings.csproj" />
<ProjectReference Include="..\Settings\Knot.Modules.Settings.csproj" />
</ItemGroup>
<ItemGroup>

Some files were not shown because too many files have changed in this diff Show More