diff --git a/.gitignore b/.gitignore index 2c6c27e..68dafe9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,24 @@ .sass-cache/ -bin/ -obj/ +/src/isnd/bin/ +/src/isnd/obj/ +/src/isn/obj +/src/isn/bin +/src/isn/.vscode/ +/test/isnd.tests/obj/ +/test/isnd.tests/bin/ +/packages/ bower_components/ -appsettings.*.json +/test/isn.tests/bin +/test/isn.tests/obj/ +appsettings.Testing.json +appsettings.Development.json +/wwwroot/.sass-cache/ +/src/isnd/wwwroot/.sass-cache/ +/src/isn.abst/bin +/src/isn.abst/obj +/src/isnd/packages/ +/test/data/test-isn/bin/ +/test/data/test-isn/obj .fake /artifacts/ /.vs/ diff --git a/Directory.Build.props b/Directory.Build.props deleted file mode 100644 index ff02831..0000000 --- a/Directory.Build.props +++ /dev/null @@ -1,11 +0,0 @@ - - - net10.0 - true - WTFPL - 1.0.8 - true - 85fd766d-5d23-4476-aed1-463b2942e86a - WTFPL - - \ No newline at end of file diff --git a/GitVersion.yml b/GitVersion.yml new file mode 100644 index 0000000..122fa7e --- /dev/null +++ b/GitVersion.yml @@ -0,0 +1,5 @@ +mode: Mainline +branches: {} +ignore: + sha: [] +merge-message-formats: {} diff --git a/README.md b/README.md index 8d9da00..0e34410 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,8 @@ sudo systemctl enable isnd ````bash sudo mkdir /usr/local/lib/isn -sudo cp -a src/isn/bin/Release/net7.0/* /usr/local/lib/isn -sudo chown -R root:root /usr/local/lib/isn +sudo cp -a src/isn/bin/Release/net6.0/* /usr/local/lib/isn +sudo chown -R root.root /usr/local/lib/isn sudo ln -s /usr/local/lib/isn/isn /usr/local/bin/isn ```` diff --git a/isn.sln b/isn.sln index 41f4f70..1e20c9f 100644 --- a/isn.sln +++ b/isn.sln @@ -1,101 +1,101 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.6.30114.105 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{3C312E42-9A47-4BED-8265-A405FCA6AFFF}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isnd.tests", "test\isnd.tests\isnd.tests.csproj", "{9D758F00-17FF-433D-B088-F9C2D97C9BD1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E8A2DF68-847A-4D88-B002-64FB666F696C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isnd", "src\isnd\isnd.csproj", "{468DB0E4-6221-4E01-BEFF-F452865E59C1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn", "src\isn\isn.csproj", "{910E800A-59AE-46C4-B7C7-879986179246}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.tests", "test\isn.tests\isn.tests.csproj", "{305F640E-11BA-44F9-95E0-C6882E9CD151}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.abstract", "src\isn.abstract\isn.abstract.csproj", "{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x64.ActiveCfg = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x64.Build.0 = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x86.ActiveCfg = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x86.Build.0 = Debug|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|Any CPU.Build.0 = Release|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x64.ActiveCfg = Release|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x64.Build.0 = Release|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x86.ActiveCfg = Release|Any CPU - {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x86.Build.0 = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x64.ActiveCfg = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x64.Build.0 = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x86.ActiveCfg = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x86.Build.0 = Debug|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|Any CPU.Build.0 = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x64.ActiveCfg = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x64.Build.0 = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x86.ActiveCfg = Release|Any CPU - {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x86.Build.0 = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|Any CPU.Build.0 = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x64.ActiveCfg = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x64.Build.0 = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x86.ActiveCfg = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x86.Build.0 = Debug|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|Any CPU.ActiveCfg = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|Any CPU.Build.0 = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|x64.ActiveCfg = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|x64.Build.0 = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|x86.ActiveCfg = Release|Any CPU - {910E800A-59AE-46C4-B7C7-879986179246}.Release|x86.Build.0 = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|Any CPU.Build.0 = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x64.ActiveCfg = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x64.Build.0 = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x86.ActiveCfg = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x86.Build.0 = Debug|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|Any CPU.ActiveCfg = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|Any CPU.Build.0 = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x64.ActiveCfg = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x64.Build.0 = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x86.ActiveCfg = Release|Any CPU - {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x86.Build.0 = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x64.ActiveCfg = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x64.Build.0 = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x86.Build.0 = Debug|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|Any CPU.Build.0 = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x64.ActiveCfg = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x64.Build.0 = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x86.ActiveCfg = Release|Any CPU - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {9D758F00-17FF-433D-B088-F9C2D97C9BD1} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF} - {468DB0E4-6221-4E01-BEFF-F452865E59C1} = {E8A2DF68-847A-4D88-B002-64FB666F696C} - {910E800A-59AE-46C4-B7C7-879986179246} = {E8A2DF68-847A-4D88-B002-64FB666F696C} - {305F640E-11BA-44F9-95E0-C6882E9CD151} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF} - {F0671F01-ADD7-47A6-8A29-1AAC8565DBE2} = {E8A2DF68-847A-4D88-B002-64FB666F696C} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.6.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{3C312E42-9A47-4BED-8265-A405FCA6AFFF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isnd.tests", "test\isnd.tests\isnd.tests.csproj", "{9D758F00-17FF-433D-B088-F9C2D97C9BD1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E8A2DF68-847A-4D88-B002-64FB666F696C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isnd", "src\isnd\isnd.csproj", "{468DB0E4-6221-4E01-BEFF-F452865E59C1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn", "src\isn\isn.csproj", "{910E800A-59AE-46C4-B7C7-879986179246}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.tests", "test\isn.tests\isn.tests.csproj", "{305F640E-11BA-44F9-95E0-C6882E9CD151}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.abst", "src\isn.abst\isn.abst.csproj", "{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x64.ActiveCfg = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x64.Build.0 = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x86.ActiveCfg = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|x86.Build.0 = Debug|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|Any CPU.Build.0 = Release|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x64.ActiveCfg = Release|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x64.Build.0 = Release|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x86.ActiveCfg = Release|Any CPU + {9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Release|x86.Build.0 = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x64.Build.0 = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x86.ActiveCfg = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Debug|x86.Build.0 = Debug|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|Any CPU.Build.0 = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x64.ActiveCfg = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x64.Build.0 = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x86.ActiveCfg = Release|Any CPU + {468DB0E4-6221-4E01-BEFF-F452865E59C1}.Release|x86.Build.0 = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|Any CPU.Build.0 = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x64.ActiveCfg = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x64.Build.0 = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x86.ActiveCfg = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Debug|x86.Build.0 = Debug|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|Any CPU.ActiveCfg = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|Any CPU.Build.0 = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|x64.ActiveCfg = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|x64.Build.0 = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|x86.ActiveCfg = Release|Any CPU + {910E800A-59AE-46C4-B7C7-879986179246}.Release|x86.Build.0 = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|Any CPU.Build.0 = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x64.ActiveCfg = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x64.Build.0 = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x86.ActiveCfg = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Debug|x86.Build.0 = Debug|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|Any CPU.ActiveCfg = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|Any CPU.Build.0 = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x64.ActiveCfg = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x64.Build.0 = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x86.ActiveCfg = Release|Any CPU + {305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x86.Build.0 = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x64.Build.0 = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x86.Build.0 = Debug|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|Any CPU.Build.0 = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x64.ActiveCfg = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x64.Build.0 = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x86.ActiveCfg = Release|Any CPU + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {9D758F00-17FF-433D-B088-F9C2D97C9BD1} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF} + {468DB0E4-6221-4E01-BEFF-F452865E59C1} = {E8A2DF68-847A-4D88-B002-64FB666F696C} + {910E800A-59AE-46C4-B7C7-879986179246} = {E8A2DF68-847A-4D88-B002-64FB666F696C} + {305F640E-11BA-44F9-95E0-C6882E9CD151} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF} + {4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7} = {E8A2DF68-847A-4D88-B002-64FB666F696C} + EndGlobalSection +EndGlobal diff --git a/src/Directory.Build.props b/src/Directory.Build.props deleted file mode 100644 index a0a3b95..0000000 --- a/src/Directory.Build.props +++ /dev/null @@ -1,11 +0,0 @@ - - - net10.0 - true - WTFPL - 1.0.8 - true - 85fd766d-5d23-4476-aed1-463b2942e86a - WTFPL - - \ No newline at end of file diff --git a/src/isn.abstract/ApiConfig.cs b/src/isn.abst/ApiConfig.cs similarity index 97% rename from src/isn.abstract/ApiConfig.cs rename to src/isn.abst/ApiConfig.cs index 9ad590c..42d9633 100644 --- a/src/isn.abstract/ApiConfig.cs +++ b/src/isn.abst/ApiConfig.cs @@ -1,6 +1,4 @@ - - -using Isn.Abstract; +using isn.abst; namespace isnd.Entities { diff --git a/src/isn.abstract/ApiIndexViewModel.cs b/src/isn.abst/ApiIndexViewModel.cs similarity index 91% rename from src/isn.abstract/ApiIndexViewModel.cs rename to src/isn.abst/ApiIndexViewModel.cs index 7034ae9..a8e9709 100644 --- a/src/isn.abstract/ApiIndexViewModel.cs +++ b/src/isn.abst/ApiIndexViewModel.cs @@ -1,7 +1,7 @@ using isnd.Data.Catalog; using Newtonsoft.Json; -namespace Isn.Abstract +namespace isn.Abstract { public class ApiIndexViewModel : HappyIdOwner { diff --git a/src/isn.abstract/Constants.cs b/src/isn.abst/Constants.cs similarity index 92% rename from src/isn.abstract/Constants.cs rename to src/isn.abst/Constants.cs index 01d2914..59ab714 100644 --- a/src/isn.abstract/Constants.cs +++ b/src/isn.abst/Constants.cs @@ -1,4 +1,4 @@ -namespace Isn.Abstract +namespace isn.abst { public static class Constants { diff --git a/src/isn.abstract/HappyIdOwner.cs b/src/isn.abst/HappyIdOwner.cs similarity index 100% rename from src/isn.abstract/HappyIdOwner.cs rename to src/isn.abst/HappyIdOwner.cs diff --git a/src/isn.abstract/Resource.cs b/src/isn.abst/Resource.cs similarity index 90% rename from src/isn.abstract/Resource.cs rename to src/isn.abst/Resource.cs index da21eff..ab069a5 100644 --- a/src/isn.abstract/Resource.cs +++ b/src/isn.abst/Resource.cs @@ -1,7 +1,7 @@ using isnd.Data.Catalog; using Newtonsoft.Json; -namespace Isn.Abstract +namespace isn.Abstract { public class Resource : HappyIdOwner { diff --git a/src/isn.abstract/SafeNameAttribute.cs b/src/isn.abst/SafeNameAttribute.cs similarity index 100% rename from src/isn.abstract/SafeNameAttribute.cs rename to src/isn.abst/SafeNameAttribute.cs diff --git a/src/isn.abst/isn.abst.csproj b/src/isn.abst/isn.abst.csproj new file mode 100644 index 0000000..411e36d --- /dev/null +++ b/src/isn.abst/isn.abst.csproj @@ -0,0 +1,15 @@ + + + 1.0.1 + 1.0.7 + net7.0 + NETSDK1138 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 + + + + + + \ No newline at end of file diff --git a/src/isn.abstract/isn.abstract.csproj b/src/isn.abstract/isn.abstract.csproj deleted file mode 100644 index 8fdeb35..0000000 --- a/src/isn.abstract/isn.abstract.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - true - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 - - - - - - \ No newline at end of file diff --git a/src/isn/Constants.cs b/src/isn/Constants.cs index 3bb3423..e68c94c 100644 --- a/src/isn/Constants.cs +++ b/src/isn/Constants.cs @@ -1,4 +1,4 @@ -namespace Isn +namespace isn { internal static class Constants { diff --git a/src/isn/IDataProtector.cs b/src/isn/IDataProtector.cs index e0904ac..d91ea23 100644 --- a/src/isn/IDataProtector.cs +++ b/src/isn/IDataProtector.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Text; -namespace Isn +namespace isn { public interface IDataProtector { diff --git a/src/isn/IsnSourceSettings.cs b/src/isn/IsnSourceSettings.cs index 1390359..bc2491c 100644 --- a/src/isn/IsnSourceSettings.cs +++ b/src/isn/IsnSourceSettings.cs @@ -1,4 +1,4 @@ -namespace Isn +namespace isn { public class IsnSourceSettings { diff --git a/src/isn/IsndErrorMessage.cs b/src/isn/IsndErrorMessage.cs index bdd61d7..fa6b062 100644 --- a/src/isn/IsndErrorMessage.cs +++ b/src/isn/IsndErrorMessage.cs @@ -1,4 +1,4 @@ -namespace Isn +namespace isn { public class IsndErrorMessage { diff --git a/src/isn/Program.cs b/src/isn/Program.cs index 6f1752d..8a543a6 100644 --- a/src/isn/Program.cs +++ b/src/isn/Program.cs @@ -5,7 +5,7 @@ using System.Linq; using Mono.Options; using Newtonsoft.Json; -namespace Isn +namespace isn { public partial class Program { diff --git a/src/isn/Settings.cs b/src/isn/Settings.cs index 9c4c1c8..2bd0def 100644 --- a/src/isn/Settings.cs +++ b/src/isn/Settings.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; -namespace Isn +namespace isn { public class SourceSettings { diff --git a/src/isn/SourceHelpers.cs b/src/isn/SourceHelpers.cs index 8b1ba21..ba8762b 100644 --- a/src/isn/SourceHelpers.cs +++ b/src/isn/SourceHelpers.cs @@ -4,9 +4,9 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; -using Isn.Abstract; +using isn.Abstract; -namespace Isn +namespace isn { public static class SourceHelpers { diff --git a/src/isn/UploadFilesToServerUsingHttpClient.cs b/src/isn/UploadFilesToServerUsingHttpClient.cs index de5c33b..ce51297 100644 --- a/src/isn/UploadFilesToServerUsingHttpClient.cs +++ b/src/isn/UploadFilesToServerUsingHttpClient.cs @@ -5,7 +5,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; -namespace Isn +namespace isn { public static class UploadFilesToServerUsingHttpClient { diff --git a/src/isn/UploadFilesToServerUsingWebRequest.cs b/src/isn/UploadFilesToServerUsingWebRequest.cs index cd2aad8..21ead1a 100644 --- a/src/isn/UploadFilesToServerUsingWebRequest.cs +++ b/src/isn/UploadFilesToServerUsingWebRequest.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; -namespace Isn +namespace isn { public class UploadFilesToServerUsingWebRequest diff --git a/src/isn/commands/PushCommand.cs b/src/isn/commands/PushCommand.cs index 0f6f303..bf4e08a 100644 --- a/src/isn/commands/PushCommand.cs +++ b/src/isn/commands/PushCommand.cs @@ -6,7 +6,7 @@ using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; -namespace Isn +namespace isn { public static class PushCommand { diff --git a/src/isn/commands/push.cs b/src/isn/commands/push.cs index e00e307..58daf08 100644 --- a/src/isn/commands/push.cs +++ b/src/isn/commands/push.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using Newtonsoft.Json; -namespace Isn +namespace isn { partial class Program diff --git a/src/isn/commands/set-api-key.cs b/src/isn/commands/set-api-key.cs index 0c4c2a5..7b2f018 100644 --- a/src/isn/commands/set-api-key.cs +++ b/src/isn/commands/set-api-key.cs @@ -4,7 +4,7 @@ using System.IO; using Newtonsoft.Json; -namespace Isn +namespace isn { partial class Program diff --git a/src/isn/commands/show.config.cs b/src/isn/commands/show.config.cs index b1d8cd8..ff00e36 100644 --- a/src/isn/commands/show.config.cs +++ b/src/isn/commands/show.config.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using Newtonsoft.Json; -namespace Isn +namespace isn { partial class Program diff --git a/src/isn/commands/sources.add.cs b/src/isn/commands/sources.add.cs index b01fe91..90d2aed 100644 --- a/src/isn/commands/sources.add.cs +++ b/src/isn/commands/sources.add.cs @@ -3,7 +3,7 @@ using System; using System.Collections.Generic; using Newtonsoft.Json; -namespace Isn +namespace isn { partial class Program diff --git a/src/isn/commands/sources.list.cs b/src/isn/commands/sources.list.cs index 79a8c7f..6a1239a 100644 --- a/src/isn/commands/sources.list.cs +++ b/src/isn/commands/sources.list.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; -namespace Isn +namespace isn { partial class Program { diff --git a/src/isn/commands/sources.set-default.cs b/src/isn/commands/sources.set-default.cs index a30a1c1..8a691b3 100644 --- a/src/isn/commands/sources.set-default.cs +++ b/src/isn/commands/sources.set-default.cs @@ -1,7 +1,7 @@ using System; using System.Linq; -namespace Isn +namespace isn { partial class Program diff --git a/src/isn/isn.csproj b/src/isn/isn.csproj index a99ff29..a61ef49 100644 --- a/src/isn/isn.csproj +++ b/src/isn/isn.csproj @@ -1,24 +1,25 @@  Exe + net7.0 nuget_cli + 45b74c62-05bc-4603-95b4-3e80ae2fdf50 + 1.0.7 + 1.0.1 true + WTFPL true NETSDK1138 - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - + + + + + + \ No newline at end of file diff --git a/src/isn/model/PushReport.cs b/src/isn/model/PushReport.cs index 61f54bd..d8e082e 100644 --- a/src/isn/model/PushReport.cs +++ b/src/isn/model/PushReport.cs @@ -1,7 +1,7 @@ using System.Net; using System.Text; -namespace Isn +namespace isn { public class PushReport { diff --git a/src/isnd/Controllers/HomeController.cs b/src/isnd/Controllers/HomeController.cs index 399d228..45512c1 100644 --- a/src/isnd/Controllers/HomeController.cs +++ b/src/isnd/Controllers/HomeController.cs @@ -1,9 +1,12 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using isnd.Data; using System.Linq; using isnd.ViewModels; +using Unleash; using System.Reflection; -using Isn.Abstract; +using Microsoft.EntityFrameworkCore; namespace isnd.Controllers { @@ -13,33 +16,31 @@ namespace isnd.Controllers public class HomeController : Controller { private readonly ApplicationDbContext _dbContext; + private readonly IUnleash _unleashĈlient; /// /// Home controller ctor /// /// + /// public HomeController( - ApplicationDbContext dbContext) + ApplicationDbContext dbContext, + IUnleash unleashĈlient) { _dbContext = dbContext; + _unleashĈlient = unleashĈlient; } - - /** - * Index - */ + public IActionResult Index() { - return View(new HomeIndexViewModel - { + return View(new HomeIndexViewModel{ PkgCount = _dbContext.Packages .Where(p => p.Versions.Count > 0) - .Count() - }); + .Count(), + UnleashClient = _unleashĈlient + }); } - /** - * About - */ public IActionResult About() { ViewData["Message"] = "Your application description page."; @@ -47,24 +48,18 @@ namespace isnd.Controllers return View(); } - /** - * Contact - */ public IActionResult Contact() { ViewData["Message"] = "Your contact page."; - var ass = typeof(Resource).GetType().Assembly; + var ass = typeof(isn.Abstract.Resource).GetType().Assembly; var attrs = ass.GetCustomAttributes(true); // ass.GetCustomAttributes(true); - System.Reflection.AssemblyFileVersionAttribute v = (AssemblyFileVersionAttribute) + System.Reflection.AssemblyFileVersionAttribute v = (AssemblyFileVersionAttribute) GetType().Assembly.GetCustomAttribute(typeof(AssemblyFileVersionAttribute)); return View(); } - /** - * Privacy - */ public IActionResult Privacy() { ViewData["Message"] = "Your Privacy page."; @@ -72,9 +67,6 @@ namespace isnd.Controllers return View(ViewData); } - /** - * Error - */ public IActionResult Error() { return View(); diff --git a/src/isnd/Controllers/Packages/ApiIndex.cs b/src/isnd/Controllers/Packages/ApiIndex.cs index eb2fc87..56930cf 100644 --- a/src/isnd/Controllers/Packages/ApiIndex.cs +++ b/src/isnd/Controllers/Packages/ApiIndex.cs @@ -1,9 +1,12 @@ using Microsoft.AspNetCore.Mvc; -using isnd.Services; -using isnd.Interfaces; -using System.Linq; using isnd.Entities; -using Isn.Abstract; +using isnd.Services; +using isn.Abstract; +using isn.abst; +using isnd.Interfaces; +using Unleash; +using System.Linq; + namespace isnd.Controllers { @@ -19,10 +22,11 @@ namespace isnd.Controllers /// Api Controller Constructor /// /// - public ApiController(IPackageManager pm) + /// + public ApiController(IPackageManager pm, IUnleash unleashĈlient) { packageManager = pm; - resources = packageManager.GetResources().ToArray(); + resources = packageManager.GetResources(unleashĈlient).ToArray(); } /// diff --git a/src/isnd/Controllers/Packages/PackagesController.AutoComplete.cs b/src/isnd/Controllers/Packages/PackagesController.AutoComplete.cs index 57cd4b5..6f1fbf6 100644 --- a/src/isnd/Controllers/Packages/PackagesController.AutoComplete.cs +++ b/src/isnd/Controllers/Packages/PackagesController.AutoComplete.cs @@ -1,7 +1,7 @@ using isnd.Services; using isnd.Entities; using Microsoft.AspNetCore.Mvc; -using Isn.Abstract; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.Catalog.cs b/src/isnd/Controllers/Packages/PackagesController.Catalog.cs index 7e74a56..950291d 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Catalog.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Catalog.cs @@ -8,7 +8,7 @@ using System.Collections.Generic; using NuGet.Versioning; using isnd.Data.Packages.Catalog; using isnd.Data.Catalog; -using Isn.Abstract; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.Delete.cs b/src/isnd/Controllers/Packages/PackagesController.Delete.cs index e117de5..74c193e 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Delete.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Delete.cs @@ -5,7 +5,7 @@ using isnd.Entities; using System.ComponentModel.DataAnnotations; using isnd.Attributes; using System.Security.Claims; -using Isn.Abstract; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs b/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs index b5b7836..b044ae7 100644 --- a/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs +++ b/src/isnd/Controllers/Packages/PackagesController.GetPackage.cs @@ -1,9 +1,9 @@ using System.ComponentModel.DataAnnotations; using System.IO; using Microsoft.AspNetCore.Mvc; -using Isn.Abstract; -using isnd.Entities; using isnd.Attributes; +using isnd.Entities; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.GetVersions.cs b/src/isnd/Controllers/Packages/PackagesController.GetVersions.cs index f6a974d..5cdda12 100644 --- a/src/isnd/Controllers/Packages/PackagesController.GetVersions.cs +++ b/src/isnd/Controllers/Packages/PackagesController.GetVersions.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Mvc; using NuGet.Versioning; using isnd.Entities; -using Isn.Abstract; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.Put.cs b/src/isnd/Controllers/Packages/PackagesController.Put.cs index b05691e..f1570e8 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Put.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Put.cs @@ -15,7 +15,7 @@ using isnd.Data; using isnd.Helpers; using isnd.Entities; using Microsoft.AspNetCore.Http; -using Isn.Abstract; +using isn.abst; using isnd.Data.Packages; using Microsoft.AspNetCore.Authorization; @@ -178,7 +178,7 @@ namespace isnd.Controllers } await dbContext.SaveChangesAsync(); - packageManager.UpdateCatalogForAsync(commit); + packageManager.ÛpdateCatalogForAsync(commit); logger.LogInformation($"new paquet : {spec.Name}"); } diff --git a/src/isnd/Controllers/Packages/PackagesController.Search.cs b/src/isnd/Controllers/Packages/PackagesController.Search.cs index 8088bd8..8a67c63 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Search.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Search.cs @@ -3,7 +3,7 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using isnd.Entities; -using Isn.Abstract; +using isn.abst; namespace isnd.Controllers { diff --git a/src/isnd/Controllers/Packages/PackagesController.cs b/src/isnd/Controllers/Packages/PackagesController.cs index c890314..ddf9e69 100644 --- a/src/isnd/Controllers/Packages/PackagesController.cs +++ b/src/isnd/Controllers/Packages/PackagesController.cs @@ -1,13 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.IO; using System.Linq; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using NuGet.Versioning; using isnd.Data; using isnd.Entities; +using Unleash; +using isnd.Services; +using isnd.ViewModels; +using System.Threading.Tasks; using isnd.Interfaces; -using Isn.Abstract; +using isn.Abstract; namespace isnd.Controllers { @@ -22,15 +30,13 @@ namespace isnd.Controllers private readonly IsndSettings isndSettings; readonly ApplicationDbContext dbContext; private readonly IPackageManager packageManager; - - /** - * PackagesController - */ + private readonly IUnleash unleashĈlient; public PackagesController( ILoggerFactory loggerFactory, IDataProtectionProvider provider, IOptions isndOptions, + IUnleash unleashĈlient, ApplicationDbContext dbContext, IPackageManager pm) { @@ -39,7 +45,8 @@ namespace isnd.Controllers protector = provider.CreateProtector(isndSettings.ProtectionTitle); this.dbContext = dbContext; packageManager = pm; - resources = packageManager.GetResources().ToArray(); + this.unleashĈlient = unleashĈlient; + resources = packageManager.GetResources(unleashĈlient).ToArray(); } } } diff --git a/src/isnd/Data/Packages/PackageVersion.cs b/src/isnd/Data/Packages/PackageVersion.cs index 95c7eb1..9120d93 100644 --- a/src/isnd/Data/Packages/PackageVersion.cs +++ b/src/isnd/Data/Packages/PackageVersion.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using Isn.Abstract; +using isn.abst; using isnd.Data.Catalog; using isnd.Data.Packages; using isnd.Data.Packages.Catalog; diff --git a/src/isnd/Helpers/PackageVersionHelpers.cs b/src/isnd/Helpers/PackageVersionHelpers.cs index a60d283..49f41d6 100644 --- a/src/isnd/Helpers/PackageVersionHelpers.cs +++ b/src/isnd/Helpers/PackageVersionHelpers.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; -using Isn.Abstract; +using isn.abst; using isnd.Data; using isnd.Data.Catalog; using isnd.Entities; diff --git a/src/isnd/Helpers/UnleashHelpers.cs b/src/isnd/Helpers/UnleashHelpers.cs new file mode 100644 index 0000000..d107bff --- /dev/null +++ b/src/isnd/Helpers/UnleashHelpers.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using isnd.Entities; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Unleash; +using Unleash.ClientFactory; + +namespace isnd.Helpers +{ + public static class UnleashHelpers + { + + public static IUnleash CreateUnleahClient(this IHostingEnvironment env, + UnleashClientSettings unleashClientSettings) + { + var unleashSettings = new UnleashSettings + { + UnleashApi = new Uri(unleashClientSettings.ApiUrl), + AppName = "isnd", + Environment = env.EnvironmentName, + CustomHttpHeaders = new Dictionary + { + { "Authorization", unleashClientSettings.ClientApiKey } + } + }; + + UnleashClientFactory unleashClientFactory = new UnleashClientFactory(); + return unleashClientFactory.CreateClient(unleashSettings); + } + } +} \ No newline at end of file diff --git a/src/isnd/Interfaces/IPackageManager.cs b/src/isnd/Interfaces/IPackageManager.cs index 9dd8ffc..8e5c2b2 100644 --- a/src/isnd/Interfaces/IPackageManager.cs +++ b/src/isnd/Interfaces/IPackageManager.cs @@ -1,76 +1,35 @@ using System.Collections.Generic; using System.Threading.Tasks; -using Isn.Abstract; +using isn.Abstract; +using isnd.Controllers; using isnd.Data; using isnd.Data.Catalog; using isnd.Data.Packages; +using isnd.Data.Packages.Catalog; using isnd.Services; using isnd.ViewModels; using NuGet.Versioning; +using Unleash; namespace isnd.Interfaces { - /** - * IPackageManager - */ public interface IPackageManager { - /** - * CatalogBaseUrl - */ string CatalogBaseUrl { get; } - /** - * AutoComplete generation - */ AutoCompleteResult AutoComplete(string pkgid, int skip, int take, bool prerelease = false, string packageType = null); - /** - * GetVersions - */ string[] GetVersions(string pkgid, NuGetVersion parsedVersion, bool prerelease = false, string packageType = null, int skip = 0, int take = 25); - /** - * GetResources - */ - IEnumerable GetResources(); - /** - * UpdateCatalogForAsync - */ - Task UpdateCatalogForAsync(Commit commit); - /** - * DeletePackageAsync - */ + IEnumerable GetResources(IUnleash unleashĈlient); + Task ÛpdateCatalogForAsync(Commit commit); Task DeletePackageAsync(string pkgid, string version, string type); - - /** - * UserAskForPackageDeletionAsync - */ Task UserAskForPackageDeletionAsync(string userid, string pkgId, string lower, string type); - - /** - * GetPackageAsync - */ Task GetPackageAsync(string pkgid, string version, string type); - - /** - * GetCatalogEntryAsync - */ Task GetCatalogEntryAsync(string pkgId, string version, string pkgType); - /** - * SearchCatalogEntriesById - */ IEnumerable SearchCatalogEntriesById(string pkgId, string semver, string pkgType); - /** - * GetCatalogIndexAsync - */ Task GetCatalogIndexAsync(); - /** - * GetPackageRegistrationIndexAsync - */ Task GetPackageRegistrationIndexAsync(RegistrationPageIndexQuery query); -/** - * SearchPackageAsync - */ + Task SearchPackageAsync(RegistrationPageIndexQuery query); } diff --git a/src/isnd/Services/PackageManager.cs b/src/isnd/Services/PackageManager.cs index 8474ec9..2dc301e 100644 --- a/src/isnd/Services/PackageManager.cs +++ b/src/isnd/Services/PackageManager.cs @@ -1,17 +1,21 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text; using System.Threading.Tasks; -using Isn.Abstract; +using isn.Abstract; using isnd.Data; using isnd.Data.Catalog; using isnd.Data.Packages; +using isnd.Data.Packages.Catalog; using isnd.Entities; +using isnd.Helpers; using isnd.Interfaces; using isnd.ViewModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; using NuGet.Versioning; +using Unleash; namespace isnd.Services { @@ -21,11 +25,6 @@ namespace isnd.Services ApplicationDbContext dbContext; - /** - * Constructor for the PackageManager class. - * @param dbContext The database context. - * @param siteConfigOptionsOptions The options for the IsndSettings configuration. - */ public PackageManager(ApplicationDbContext dbContext, IOptions siteConfigOptionsOptions) { @@ -34,11 +33,7 @@ namespace isnd.Services extUrl = isndSettings.ExternalUrl + "/"; } - /** - * GetResources - */ - - public IEnumerable GetResources() + public IEnumerable GetResources(IUnleash unleashClient) { var res = new List @@ -67,15 +62,39 @@ namespace isnd.Services Comment = "Base URL of storage where isn package registration info is stored. This base URL includes SemVer 2.0.0 packages." } }; + /* new Resource(extUrl + ApiConfig.Catalog, "Catalog/" + BASE_API_LEVEL) + { + Comment = "Package Catalog Index" + },*/ + + /* res.Add( + ); res.Add( + new Resource(extUrl + "v3.0.0/" + ApiConfig.Registration, "RegistrationsBaseUrl") + { + + Comment = "Base URL of storage where isn package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." + }); + + res.Add( + new Resource(extUrl + "v3.0.0-beta/" + ApiConfig.Registration, "RegistrationsBaseUrl/3.0.0-beta") + { + Comment = "Base URL of storage where isn package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." + }); + res.Add( + new Resource(extUrl + "v3.0.0-rc/" + ApiConfig.Registration,"RegistrationsBaseUrl/3.0.0-rc") + { + Comment = "Base URL of storage where isn package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." + }); + res.Add(new Resource(extUrl + "v3.4.0/" + ApiConfig.Registration,"RegistrationsBaseUrl/3.4.0") + { + Comment = "Base URL of storage where isn package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." + }); + + res.Add(); */ return res; } - /** - * AutoComplete generation - */ - - public AutoCompleteResult AutoComplete(string id, int skip, int take, bool prerelease = false, string packageType = null) @@ -116,24 +135,18 @@ namespace isnd.Services } - /** - * CatalogBaseUrl - */ + public string CatalogBaseUrl => extUrl; private IsndSettings isndSettings; private string extUrl; - /** - * GetCatalogIndexAsync - */ - public virtual async Task GetCatalogIndexAsync() { - return await UpdateCatalogForAsync(null); + return await ÛpdateCatalogForAsync(null); } - public async Task UpdateCatalogForAsync(Commit reason = null) + public async Task ÛpdateCatalogForAsync(Commit reason = null) { int i = 0; @@ -208,7 +221,7 @@ namespace isnd.Services } dbContext.PackageVersions.Remove(pkg); await dbContext.SaveChangesAsync(); - await UpdateCatalogForAsync(commit); + await ÛpdateCatalogForAsync(commit); return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg }; } diff --git a/src/isnd/Startup.cs b/src/isnd/Startup.cs index 9ef1a52..93be266 100644 --- a/src/isnd/Startup.cs +++ b/src/isnd/Startup.cs @@ -1,4 +1,5 @@ - +using System.Linq; +using System.Collections.Generic; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; @@ -14,46 +15,41 @@ using isnd.Entities; using isnd.Authorization; using isnd.Data.Roles; using Microsoft.AspNetCore.Authorization; +using Unleash; using Microsoft.Extensions.Options; using isnd.Helpers; using Microsoft.IdentityModel.Tokens; using System; +using Microsoft.OpenApi.Models; using System.IO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using System.Text.Json; +using System.Text.Json.Serialization; +using isnd.Data.Catalog; +using Newtonsoft.Json; using Microsoft.AspNetCore.HttpOverrides; -using Microsoft.OpenApi; namespace isnd { -/** - * Startup class for configuring services and the app's request pipeline. - */ public class Startup { - /** - * Constructor for the Startup class. - * @param config The configuration object. - */ public Startup(IConfiguration config) { Configuration = config; } - /** - * The configuration object. - */ public static IConfiguration Configuration { get; private set; } - /** - * This method gets called by the runtime. Use this method to add services to the container. - * @param services The service collection. - */ + // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var smtpSettingsconf = Configuration.GetSection("Smtp"); var isndSettingsconf = Configuration.GetSection("Isn"); var adminStartupListConf = Configuration.GetSection("AdminList"); + var unleashConf = Configuration.GetSection("Unleash"); services.Configure(options => { @@ -61,26 +57,14 @@ namespace isnd ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; }); - var connectionString = Configuration.GetConnectionString("DefaultConnection"); - var useInMemoryDatabase = Configuration.GetValue("UseInMemoryDatabase") || - string.IsNullOrWhiteSpace(connectionString) || - connectionString.Contains("<", StringComparison.Ordinal); - services.Configure(smtpSettingsconf) .Configure(isndSettingsconf) .Configure(adminStartupListConf) + .Configure(unleashConf) .Configure(o => o.Path = "~/migrate") .AddDbContext(options => - { - if (useInMemoryDatabase) - { - options.UseInMemoryDatabase("isnd-tests"); - } - else - { - options.UseNpgsql(connectionString); - } - }) + options.UseNpgsql( + Configuration.GetConnectionString("DefaultConnection"))) .AddIdentity() .AddRoles() .AddEntityFrameworkStores() @@ -105,7 +89,20 @@ namespace isnd .AddTransient() .AddTransient() .AddSingleton() - .AddAuthentication("Bearer") + .AddSingleton(s => + { + var config = s.GetRequiredService>(); + if (config.Value == null) + throw new System.Exception("No unleash client settings"); + if (config.Value.ApiUrl == null) + throw new System.Exception("No unleash client ApiUrl"); + if (config.Value.ClientApiKey == null) + throw new System.Exception("No unleash client ClientApiKey"); + return s.GetRequiredService().CreateUnleahClient(config.Value); + }); + + + services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.Authority = isndSettingsconf.GetValue("ExternalUrl"); @@ -144,13 +141,7 @@ namespace isnd }); } - /** - * This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - * @param app The application builder. - * @param env The web host environment. - * @param dbContext The application database context. - * @param isnSettingsOption The isnd settings options. - */ + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ApplicationDbContext dbContext, diff --git a/src/isnd/ViewModels/HomeIndexViewModel.cs b/src/isnd/ViewModels/HomeIndexViewModel.cs index 1beadca..3dac63c 100644 --- a/src/isnd/ViewModels/HomeIndexViewModel.cs +++ b/src/isnd/ViewModels/HomeIndexViewModel.cs @@ -1,8 +1,11 @@ +using Unleash; + namespace isnd.ViewModels { public class HomeIndexViewModel { public int PkgCount { get; set; } + public IUnleash UnleashClient; } } \ No newline at end of file diff --git a/src/isnd/Views/Home/Features.cshtml b/src/isnd/Views/Home/Features.cshtml index ab2d034..e38c6a9 100644 --- a/src/isnd/Views/Home/Features.cshtml +++ b/src/isnd/Views/Home/Features.cshtml @@ -3,8 +3,15 @@ foreach (string leashed in new string[] { "pkg-push", "pkg-get", "pkg-autocomplete","pkg-search","pkg-catalog"}) { - + if (Model.UnleashClient.IsEnabled(leashed)) + { + //do some magic +

@leashed

+ } + else + { //do old boring stuff

No @leashed (disabled)

} + } } \ No newline at end of file diff --git a/src/isnd/appsettings.json b/src/isnd/appsettings.json index ba98409..61e4a9b 100644 --- a/src/isnd/appsettings.json +++ b/src/isnd/appsettings.json @@ -21,6 +21,11 @@ "SenderName": "", "SenderEmail": "" }, + "Unleash": + { + "ClientApiKey": "lame-unleash-client-api-key", + "ApiUrl": "http://localhost:4242/api/" + }, "Logging": { "LogLevel": { "Default": "Warning" diff --git a/src/isnd/isnd.csproj b/src/isnd/isnd.csproj index 9b04000..c3c424c 100644 --- a/src/isnd/isnd.csproj +++ b/src/isnd/isnd.csproj @@ -1,42 +1,48 @@  + net7.0 + 85fd766d-5d23-4476-aed1-463b2942e86a true - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 + WTFPL + NETSDK1138,CS1591,MSB3243 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 + 1.0.7 + true + - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all + + + + + + + + + + + + + + + All - - - + + + + - - - - - - - - - - - - - + - diff --git a/test/data/test-isn/test-isn.csproj b/test/data/test-isn/test-isn.csproj index 31afac1..9836c56 100644 --- a/test/data/test-isn/test-isn.csproj +++ b/test/data/test-isn/test-isn.csproj @@ -5,9 +5,9 @@ test_isn enable enable - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 + 1.0.7 \ No newline at end of file diff --git a/test/isn.tests/PushTest.cs b/test/isn.tests/PushTest.cs index a53ebf5..6e0f264 100644 --- a/test/isn.tests/PushTest.cs +++ b/test/isn.tests/PushTest.cs @@ -1,137 +1,29 @@ using System; -using System.Collections.Generic; +using System.Data; using System.IO; -using System.Linq; -using System.Net; +using System.Xml; using System.Net.Http; -using System.Net.Sockets; -using System.Text; + using System.Threading.Tasks; using Newtonsoft.Json; +using isn.Abstract; +using System.Linq; using Xunit; +using isn.abst; using isnd.Entities; -using Isn.Abstract; -namespace Isn.tests +namespace isn.tests { - public sealed class LocalSourceFixture : IDisposable + public class Tests { - private readonly HttpListener listener; - private readonly Task listenerTask; - - public LocalSourceFixture() - { - var port = GetFreePort(); - var prefix = $"http://127.0.0.1:{port}/"; - listener = new HttpListener(); - listener.Prefixes.Add(prefix); - listener.Start(); - - listenerTask = Task.Run(async () => - { - while (listener.IsListening) - { - HttpListenerContext context; - try - { - context = await listener.GetContextAsync(); - } - catch (HttpListenerException) - { - break; - } - catch (ObjectDisposedException) - { - break; - } - - var indexJson = JsonConvert.SerializeObject(new ApiIndexViewModel(prefix + "index.json") - { - Version = "3.0.0", - Resources = new[] - { - new Resource(prefix + "put", "PackagePublish/2.0.0") - { - Comment = "test publish endpoint" - } - } - }); - var payload = Encoding.UTF8.GetBytes(indexJson); - context.Response.ContentType = "application/json"; - context.Response.ContentLength64 = payload.Length; - await context.Response.OutputStream.WriteAsync(payload, 0, payload.Length); - context.Response.Close(); - } - }); - - SourceUrl = prefix + "index.json"; - ConfigureIsnSettings(SourceUrl); - Program.LoadConfig(); - } - - public string SourceUrl { get; } - - public void Dispose() - { - listener.Close(); - if (listenerTask != null) - { - try - { - listenerTask.GetAwaiter().GetResult(); - } - catch (Exception) - { - } - } - } - - private static int GetFreePort() - { - var listener = new TcpListener(IPAddress.Loopback, 0); - listener.Start(); - var port = ((IPEndPoint)listener.LocalEndpoint).Port; - listener.Stop(); - return port; - } - - private static void ConfigureIsnSettings(string sourceUrl) - { - var home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - var configDirectory = Path.Combine(home, ".isn"); - Directory.CreateDirectory(configDirectory); - - var configPath = Path.Combine(configDirectory, "config.json"); - var settings = new Settings - { - DataProtectionTitle = "isn", - Sources = new Dictionary - { - [sourceUrl] = new SourceSettings { Alias = "test" } - }, - DefaultSourceKey = sourceUrl - }; - - File.WriteAllText(configPath, JsonConvert.SerializeObject(settings, Formatting.Indented)); - } - } - - public class Tests : IClassFixture - { - private readonly LocalSourceFixture fixture; - - public Tests(LocalSourceFixture fixture) - { - this.fixture = fixture; - } [Fact] public void HaveADefaultDataProtector() { - var pass = "a lame and big pass"; - IDataProtector protector = new DefaultDataProtector(); - var protectedpass = protector.Protect(pass); - var unprotectedpass = protector.UnProtect(protectedpass); + string pass = "a lame and big pass"; + isn.IDataProtector _protector = new isn.DefaultDataProtector(); + string protectedpass = _protector.Protect(pass); + string unprotectedpass = _protector.UnProtect(protectedpass); Console.WriteLine(protectedpass); Assert.Equal(pass, unprotectedpass); Assert.True(protectedpass != null); @@ -141,32 +33,33 @@ namespace Isn.tests [Fact] public async Task TestHttpClient() { - using var client = new HttpClient(); - var response = await client.GetAsync(fixture.SourceUrl); + string url = "https://isn.pschneider.fr/" + ApiConfig.IndexDotJson; + HttpClient client = new HttpClient(); + // var json = await client.GetStringAsync(new System.Uri(url)); + var response = await client.GetAsync(url); var json = await response.Content.ReadAsStringAsync(); var vm = JsonConvert.DeserializeObject(json); Console.WriteLine(JsonConvert.SerializeObject(vm)); Assert.NotNull(vm); Assert.NotNull(vm.Resources); } - [Fact] public void TestPush() { Program.LoadConfig(); - var report = Program.PushPkg(new[] { Path.Combine(AppContext.BaseDirectory, "dummy.nupkg") }); - Assert.NotNull(report); - Assert.Single(report); + var report = Program.PushPkg(new string[] { "/home/paul/Nupkgs/Yavsc.Abstract.1.0.8." + + Constants.PaquetFileEstension }); } [Fact] public void GetServerResourcesUsingHttpClientAsyncTest() { - var model = SourceHelpers.GetServerResources(fixture.SourceUrl); + var model = SourceHelpers.GetServerResources("Https://isn.pschneider.fr/index.json"); Console.WriteLine(JsonConvert.SerializeObject(model)); Assert.NotNull(model.Resources); - var pub = model.Resources.FirstOrDefault(r => r.Type.StartsWith("PackagePublish/")); + var pub = model.Resources.FirstOrDefault((r) => r.Type.StartsWith("PackagePublish/")); Assert.True(pub != null); } + } } \ No newline at end of file diff --git a/test/isn.tests/isn.tests.csproj b/test/isn.tests/isn.tests.csproj index 9371392..faae98f 100644 --- a/test/isn.tests/isn.tests.csproj +++ b/test/isn.tests/isn.tests.csproj @@ -1,18 +1,20 @@  + net7.0 false - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 + NETSDK1138 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 + 1.0.7 - - + + - - - + + + diff --git a/test/isnd.tests/UnitTestWebHost.cs b/test/isnd.tests/UnitTestWebHost.cs index 96a1203..99ac24e 100644 --- a/test/isnd.tests/UnitTestWebHost.cs +++ b/test/isnd.tests/UnitTestWebHost.cs @@ -1,6 +1,5 @@ using System.Threading; using System; -using System.Net.Http; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore; using Xunit; @@ -17,7 +16,6 @@ using NuGet.Protocol; using NuGet.Configuration; using System.Threading.Tasks; using NuGet.Protocol.Core.Types; -using NuGet.Common; namespace isnd.host.tests { @@ -37,14 +35,7 @@ namespace isnd.host.tests { var services = serviceScope.ServiceProvider; var myDependency = services.GetRequiredService(); - if (myDependency.Database.ProviderName?.Contains("InMemory", StringComparison.OrdinalIgnoreCase) == true) - { - myDependency.Database.EnsureCreated(); - } - else - { - myDependency.Database.Migrate(); - } + myDependency.Database.Migrate(); } } @@ -70,15 +61,17 @@ namespace isnd.host.tests public void NugetInstallsTest() { using (var serviceScope = server.Host.Services.CreateScope()) - { - var isnSettings = serviceScope.ServiceProvider.GetService>().Value; - string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json"; - using var client = new HttpClient(); - var response = client.GetAsync(pkgSourceUrl).GetAwaiter().GetResult(); - var body = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); - - Assert.True(response.IsSuccessStatusCode, $"Expected {pkgSourceUrl} to be reachable but got {(int)response.StatusCode} {response.ReasonPhrase}"); - Assert.False(string.IsNullOrWhiteSpace(body)); + { var isnSettings = serviceScope.ServiceProvider.GetService>().Value; + string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json"; + ProcessStartInfo psi = new ProcessStartInfo("nuget"); + psi.ArgumentList.Add("install"); + psi.ArgumentList.Add("gitversion"); + psi.ArgumentList.Add("-PreRelease"); + psi.ArgumentList.Add("-Source"); + psi.ArgumentList.Add(pkgSourceUrl); + Process p = Process.Start(psi); + p.WaitForExit(); + Assert.True(p.ExitCode == 0, "nuget install failed!"); } } @@ -87,7 +80,7 @@ namespace isnd.host.tests { using (var serviceScope = server.Host.Services.CreateScope()) { var isnSettings = serviceScope.ServiceProvider.GetService>().Value; - string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json"; + string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json"; NullThrottle throttle = new NullThrottle(); PackageSource packageSource = new PackageSource(pkgSourceUrl); @@ -103,7 +96,7 @@ namespace isnd.host.tests using (var serviceScope = server.Host.Services.CreateScope()) { var isnSettings = serviceScope.ServiceProvider.GetService>().Value; - string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json"; + string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json"; var prov = new RegistrationResourceV3Provider(); var source = new PackageSource(pkgSourceUrl); var repo = new SourceRepository(source, new INuGetResourceProvider[]{ prov }); diff --git a/test/isnd.tests/WebServerFixture.cs b/test/isnd.tests/WebServerFixture.cs index b634ccc..b45be22 100644 --- a/test/isnd.tests/WebServerFixture.cs +++ b/test/isnd.tests/WebServerFixture.cs @@ -38,8 +38,8 @@ namespace isnd.tests .UseStartup(typeof(Startup)) .ConfigureAppConfiguration((builderContext, config) => { - config.AddJsonFile("appsettings.json", optional: false); - config.AddJsonFile("appsettings.Development.json", optional: true); + config.AddJsonFile("appsettings.json", false); + config.AddJsonFile("appsettings.Development.json", false); }); Host = webhostBuilder.Build(); diff --git a/test/isnd.tests/isnd.tests.csproj b/test/isnd.tests/isnd.tests.csproj index 657cd31..f3572a8 100644 --- a/test/isnd.tests/isnd.tests.csproj +++ b/test/isnd.tests/isnd.tests.csproj @@ -1,12 +1,13 @@  + net7.0 false d7144e46-4e63-4391-ba86-64b61f6e7be4 NETSDK1138 - 1.0.0.0 - 1.0.0.0 - 1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85 - 1.0.0 + 1.0.7.0 + 1.0.7.0 + 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 + 1.0.7 diff --git a/test/isnd.tests/wwwroot/favicon.ico b/test/isnd.tests/wwwroot/favicon.ico new file mode 100644 index 0000000..e69de29