Compare commits
No commits in common. "39ff100eabf4b33ee8637c99b2e33e319b41d722" and "654065d7fef34ba4ed2fb3bca5bc91de9ad16e85" have entirely different histories.
39ff100eab
...
654065d7fe
59 changed files with 441 additions and 533 deletions
22
.gitignore
vendored
22
.gitignore
vendored
|
|
@ -1,8 +1,24 @@
|
||||||
.sass-cache/
|
.sass-cache/
|
||||||
bin/
|
/src/isnd/bin/
|
||||||
obj/
|
/src/isnd/obj/
|
||||||
|
/src/isn/obj
|
||||||
|
/src/isn/bin
|
||||||
|
/src/isn/.vscode/
|
||||||
|
/test/isnd.tests/obj/
|
||||||
|
/test/isnd.tests/bin/
|
||||||
|
/packages/
|
||||||
bower_components/
|
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
|
.fake
|
||||||
/artifacts/
|
/artifacts/
|
||||||
/.vs/
|
/.vs/
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<Project>
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
|
||||||
<IsPackable>true</IsPackable>
|
|
||||||
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
|
||||||
<Version>1.0.8</Version>
|
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
||||||
<UserSecretsId>85fd766d-5d23-4476-aed1-463b2942e86a</UserSecretsId>
|
|
||||||
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
||||||
5
GitVersion.yml
Normal file
5
GitVersion.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
mode: Mainline
|
||||||
|
branches: {}
|
||||||
|
ignore:
|
||||||
|
sha: []
|
||||||
|
merge-message-formats: {}
|
||||||
|
|
@ -55,8 +55,8 @@ sudo systemctl enable isnd
|
||||||
|
|
||||||
````bash
|
````bash
|
||||||
sudo mkdir /usr/local/lib/isn
|
sudo mkdir /usr/local/lib/isn
|
||||||
sudo cp -a src/isn/bin/Release/net7.0/* /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 chown -R root.root /usr/local/lib/isn
|
||||||
sudo ln -s /usr/local/lib/isn/isn /usr/local/bin/isn
|
sudo ln -s /usr/local/lib/isn/isn /usr/local/bin/isn
|
||||||
````
|
````
|
||||||
|
|
||||||
|
|
|
||||||
34
isn.sln
34
isn.sln
|
|
@ -15,7 +15,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn", "src\isn\isn.csproj",
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.tests", "test\isn.tests\isn.tests.csproj", "{305F640E-11BA-44F9-95E0-C6882E9CD151}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.tests", "test\isn.tests\isn.tests.csproj", "{305F640E-11BA-44F9-95E0-C6882E9CD151}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.abstract", "src\isn.abstract\isn.abstract.csproj", "{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isn.abst", "src\isn.abst\isn.abst.csproj", "{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|
@ -26,6 +26,9 @@ Global
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
Release|x86 = Release|x86
|
Release|x86 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{9D758F00-17FF-433D-B088-F9C2D97C9BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{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|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
|
@ -75,27 +78,24 @@ Global
|
||||||
{305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x64.Build.0 = 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.ActiveCfg = Release|Any CPU
|
||||||
{305F640E-11BA-44F9-95E0-C6882E9CD151}.Release|x86.Build.0 = 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
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x64.ActiveCfg = Debug|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x64.Build.0 = Debug|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Debug|x86.Build.0 = Debug|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|Any CPU.Build.0 = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x64.ActiveCfg = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x64.Build.0 = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x86.ActiveCfg = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2}.Release|x86.Build.0 = Release|Any CPU
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{9D758F00-17FF-433D-B088-F9C2D97C9BD1} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF}
|
{9D758F00-17FF-433D-B088-F9C2D97C9BD1} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF}
|
||||||
{468DB0E4-6221-4E01-BEFF-F452865E59C1} = {E8A2DF68-847A-4D88-B002-64FB666F696C}
|
{468DB0E4-6221-4E01-BEFF-F452865E59C1} = {E8A2DF68-847A-4D88-B002-64FB666F696C}
|
||||||
{910E800A-59AE-46C4-B7C7-879986179246} = {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}
|
{305F640E-11BA-44F9-95E0-C6882E9CD151} = {3C312E42-9A47-4BED-8265-A405FCA6AFFF}
|
||||||
{F0671F01-ADD7-47A6-8A29-1AAC8565DBE2} = {E8A2DF68-847A-4D88-B002-64FB666F696C}
|
{4EFA7D3E-8B31-4BF7-96D1-B9F2867735C7} = {E8A2DF68-847A-4D88-B002-64FB666F696C}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<Project>
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFrameworks>net10.0</TargetFrameworks>
|
|
||||||
<IsPackable>true</IsPackable>
|
|
||||||
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
|
||||||
<Version>1.0.8</Version>
|
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
||||||
<UserSecretsId>85fd766d-5d23-4476-aed1-463b2942e86a</UserSecretsId>
|
|
||||||
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
|
using isn.abst;
|
||||||
|
|
||||||
using Isn.Abstract;
|
|
||||||
|
|
||||||
namespace isnd.Entities
|
namespace isnd.Entities
|
||||||
{
|
{
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn.Abstract
|
namespace isn.Abstract
|
||||||
{
|
{
|
||||||
public class ApiIndexViewModel : HappyIdOwner
|
public class ApiIndexViewModel : HappyIdOwner
|
||||||
{
|
{
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Isn.Abstract
|
namespace isn.abst
|
||||||
{
|
{
|
||||||
public static class Constants
|
public static class Constants
|
||||||
{
|
{
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn.Abstract
|
namespace isn.Abstract
|
||||||
{
|
{
|
||||||
public class Resource : HappyIdOwner
|
public class Resource : HappyIdOwner
|
||||||
{
|
{
|
||||||
15
src/isn.abst/isn.abst.csproj
Normal file
15
src/isn.abst/isn.abst.csproj
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<PackageVersion>1.0.1</PackageVersion>
|
||||||
|
<Version>1.0.7</Version>
|
||||||
|
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||||
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
|
||||||
|
<Reference Include="System.ComponentModel.DataAnnotations" Version="4.0.0.0"/>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
<PropertyGroup>
|
|
||||||
<IsPackable>true</IsPackable>
|
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
|
||||||
<Version>1.0.0</Version>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" Version="4.0.0.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
internal static class Constants
|
internal static class Constants
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public interface IDataProtector
|
public interface IDataProtector
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public class IsnSourceSettings
|
public class IsnSourceSettings
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public class IsndErrorMessage
|
public class IsndErrorMessage
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Linq;
|
||||||
using Mono.Options;
|
using Mono.Options;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public partial class Program
|
public partial class Program
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public class SourceSettings
|
public class SourceSettings
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Isn.Abstract;
|
using isn.Abstract;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public static class SourceHelpers
|
public static class SourceHelpers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public static class UploadFilesToServerUsingHttpClient
|
public static class UploadFilesToServerUsingHttpClient
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
public class UploadFilesToServerUsingWebRequest
|
public class UploadFilesToServerUsingWebRequest
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ using System.Net.Http;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public static class PushCommand
|
public static class PushCommand
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
partial class Program
|
partial class Program
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ using System.IO;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
partial class Program
|
partial class Program
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
partial class Program
|
partial class Program
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
partial class Program
|
partial class Program
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
partial class Program
|
partial class Program
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
|
|
||||||
partial class Program
|
partial class Program
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,25 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||||
<RootNamespace>nuget_cli</RootNamespace>
|
<RootNamespace>nuget_cli</RootNamespace>
|
||||||
|
<UserSecretsId>45b74c62-05bc-4603-95b4-3e80ae2fdf50</UserSecretsId>
|
||||||
|
<Version>1.0.7</Version>
|
||||||
|
<PackageVersion>1.0.1</PackageVersion>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
|
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
||||||
<IsTool>true</IsTool>
|
<IsTool>true</IsTool>
|
||||||
<NoWarn>NETSDK1138</NoWarn>
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
<Version>1.0.0</Version>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="GitVersion.MsBuild" Version="6.8.1">
|
<PackageReference Include="Mono.Options" Version="5.3.0" />
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PackageReference Include="unleash.client" Version="1.6.1" />
|
||||||
</PackageReference>
|
<Reference Include="System.Net.Http" Version="4.0.0" />
|
||||||
<PackageReference Include="Mono.Options" Version="6.12.0.148" />
|
<PackageReference Include="GitVersion.MsBuild" Version="5.6.10*" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
||||||
<PackageReference Include="unleash.client" Version="6.2.1" />
|
|
||||||
<Reference Include="System.Net.Http" Version="4.0.0.0" />
|
|
||||||
<ProjectReference Include="..\isn.abstract\isn.abstract.csproj" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Isn
|
namespace isn
|
||||||
{
|
{
|
||||||
public class PushReport
|
public class PushReport
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using isnd.Data;
|
using isnd.Data;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using isnd.ViewModels;
|
using isnd.ViewModels;
|
||||||
|
using Unleash;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Isn.Abstract;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
@ -13,33 +16,31 @@ namespace isnd.Controllers
|
||||||
public class HomeController : Controller
|
public class HomeController : Controller
|
||||||
{
|
{
|
||||||
private readonly ApplicationDbContext _dbContext;
|
private readonly ApplicationDbContext _dbContext;
|
||||||
|
private readonly IUnleash _unleashĈlient;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Home controller ctor
|
/// Home controller ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dbContext"></param>
|
/// <param name="dbContext"></param>
|
||||||
|
/// <param name="unleashĈlient"></param>
|
||||||
|
|
||||||
public HomeController(
|
public HomeController(
|
||||||
ApplicationDbContext dbContext)
|
ApplicationDbContext dbContext,
|
||||||
|
IUnleash unleashĈlient)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
|
_unleashĈlient = unleashĈlient;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Index
|
|
||||||
*/
|
|
||||||
public IActionResult Index()
|
public IActionResult Index()
|
||||||
{
|
{
|
||||||
return View(new HomeIndexViewModel
|
return View(new HomeIndexViewModel{
|
||||||
{
|
|
||||||
PkgCount = _dbContext.Packages
|
PkgCount = _dbContext.Packages
|
||||||
.Where(p => p.Versions.Count > 0)
|
.Where(p => p.Versions.Count > 0)
|
||||||
.Count()
|
.Count(),
|
||||||
|
UnleashClient = _unleashĈlient
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* About
|
|
||||||
*/
|
|
||||||
public IActionResult About()
|
public IActionResult About()
|
||||||
{
|
{
|
||||||
ViewData["Message"] = "Your application description page.";
|
ViewData["Message"] = "Your application description page.";
|
||||||
|
|
@ -47,13 +48,10 @@ namespace isnd.Controllers
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Contact
|
|
||||||
*/
|
|
||||||
public IActionResult Contact()
|
public IActionResult Contact()
|
||||||
{
|
{
|
||||||
ViewData["Message"] = "Your contact page.";
|
ViewData["Message"] = "Your contact page.";
|
||||||
var ass = typeof(Resource).GetType().Assembly;
|
var ass = typeof(isn.Abstract.Resource).GetType().Assembly;
|
||||||
var attrs = ass.GetCustomAttributes(true);
|
var attrs = ass.GetCustomAttributes(true);
|
||||||
// ass.GetCustomAttributes(true);
|
// ass.GetCustomAttributes(true);
|
||||||
System.Reflection.AssemblyFileVersionAttribute v = (AssemblyFileVersionAttribute)
|
System.Reflection.AssemblyFileVersionAttribute v = (AssemblyFileVersionAttribute)
|
||||||
|
|
@ -62,9 +60,6 @@ namespace isnd.Controllers
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Privacy
|
|
||||||
*/
|
|
||||||
public IActionResult Privacy()
|
public IActionResult Privacy()
|
||||||
{
|
{
|
||||||
ViewData["Message"] = "Your Privacy page.";
|
ViewData["Message"] = "Your Privacy page.";
|
||||||
|
|
@ -72,9 +67,6 @@ namespace isnd.Controllers
|
||||||
return View(ViewData);
|
return View(ViewData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Error
|
|
||||||
*/
|
|
||||||
public IActionResult Error()
|
public IActionResult Error()
|
||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using isnd.Services;
|
|
||||||
using isnd.Interfaces;
|
|
||||||
using System.Linq;
|
|
||||||
using isnd.Entities;
|
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
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
@ -19,10 +22,11 @@ namespace isnd.Controllers
|
||||||
/// Api Controller Constructor
|
/// Api Controller Constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pm"></param>
|
/// <param name="pm"></param>
|
||||||
public ApiController(IPackageManager pm)
|
/// <param name="unleashĈlient"></param>
|
||||||
|
public ApiController(IPackageManager pm, IUnleash unleashĈlient)
|
||||||
{
|
{
|
||||||
packageManager = pm;
|
packageManager = pm;
|
||||||
resources = packageManager.GetResources().ToArray();
|
resources = packageManager.GetResources(unleashĈlient).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using isnd.Services;
|
using isnd.Services;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ using System.Collections.Generic;
|
||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
using isnd.Data.Packages.Catalog;
|
using isnd.Data.Packages.Catalog;
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ using isnd.Entities;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using isnd.Attributes;
|
using isnd.Attributes;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Isn.Abstract;
|
|
||||||
using isnd.Entities;
|
|
||||||
using isnd.Attributes;
|
using isnd.Attributes;
|
||||||
|
using isnd.Entities;
|
||||||
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ using isnd.Data;
|
||||||
using isnd.Helpers;
|
using isnd.Helpers;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
using isnd.Data.Packages;
|
using isnd.Data.Packages;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
|
||||||
|
|
@ -178,7 +178,7 @@ namespace isnd.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
await dbContext.SaveChangesAsync();
|
await dbContext.SaveChangesAsync();
|
||||||
packageManager.UpdateCatalogForAsync(commit);
|
packageManager.ÛpdateCatalogForAsync(commit);
|
||||||
|
|
||||||
logger.LogInformation($"new paquet : {spec.Name}");
|
logger.LogInformation($"new paquet : {spec.Name}");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,21 @@
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.DataProtection;
|
using Microsoft.AspNetCore.DataProtection;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using NuGet.Versioning;
|
||||||
using isnd.Data;
|
using isnd.Data;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
|
using Unleash;
|
||||||
|
using isnd.Services;
|
||||||
|
using isnd.ViewModels;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using isnd.Interfaces;
|
using isnd.Interfaces;
|
||||||
using Isn.Abstract;
|
using isn.Abstract;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
|
|
@ -22,15 +30,13 @@ namespace isnd.Controllers
|
||||||
private readonly IsndSettings isndSettings;
|
private readonly IsndSettings isndSettings;
|
||||||
readonly ApplicationDbContext dbContext;
|
readonly ApplicationDbContext dbContext;
|
||||||
private readonly IPackageManager packageManager;
|
private readonly IPackageManager packageManager;
|
||||||
|
private readonly IUnleash unleashĈlient;
|
||||||
/**
|
|
||||||
* PackagesController
|
|
||||||
*/
|
|
||||||
|
|
||||||
public PackagesController(
|
public PackagesController(
|
||||||
ILoggerFactory loggerFactory,
|
ILoggerFactory loggerFactory,
|
||||||
IDataProtectionProvider provider,
|
IDataProtectionProvider provider,
|
||||||
IOptions<IsndSettings> isndOptions,
|
IOptions<IsndSettings> isndOptions,
|
||||||
|
IUnleash unleashĈlient,
|
||||||
ApplicationDbContext dbContext,
|
ApplicationDbContext dbContext,
|
||||||
IPackageManager pm)
|
IPackageManager pm)
|
||||||
{
|
{
|
||||||
|
|
@ -39,7 +45,8 @@ namespace isnd.Controllers
|
||||||
protector = provider.CreateProtector(isndSettings.ProtectionTitle);
|
protector = provider.CreateProtector(isndSettings.ProtectionTitle);
|
||||||
this.dbContext = dbContext;
|
this.dbContext = dbContext;
|
||||||
packageManager = pm;
|
packageManager = pm;
|
||||||
resources = packageManager.GetResources().ToArray();
|
this.unleashĈlient = unleashĈlient;
|
||||||
|
resources = packageManager.GetResources(unleashĈlient).ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using isnd.Data.Packages;
|
using isnd.Data.Packages;
|
||||||
using isnd.Data.Packages.Catalog;
|
using isnd.Data.Packages.Catalog;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using Isn.Abstract;
|
using isn.abst;
|
||||||
using isnd.Data;
|
using isnd.Data;
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
|
|
|
||||||
32
src/isnd/Helpers/UnleashHelpers.cs
Normal file
32
src/isnd/Helpers/UnleashHelpers.cs
Normal file
|
|
@ -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<string, string>
|
||||||
|
{
|
||||||
|
{ "Authorization", unleashClientSettings.ClientApiKey }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
UnleashClientFactory unleashClientFactory = new UnleashClientFactory();
|
||||||
|
return unleashClientFactory.CreateClient(unleashSettings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,76 +1,35 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Isn.Abstract;
|
using isn.Abstract;
|
||||||
|
using isnd.Controllers;
|
||||||
using isnd.Data;
|
using isnd.Data;
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using isnd.Data.Packages;
|
using isnd.Data.Packages;
|
||||||
|
using isnd.Data.Packages.Catalog;
|
||||||
using isnd.Services;
|
using isnd.Services;
|
||||||
using isnd.ViewModels;
|
using isnd.ViewModels;
|
||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
|
using Unleash;
|
||||||
|
|
||||||
namespace isnd.Interfaces
|
namespace isnd.Interfaces
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* IPackageManager
|
|
||||||
*/
|
|
||||||
public interface IPackageManager
|
public interface IPackageManager
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* CatalogBaseUrl
|
|
||||||
*/
|
|
||||||
string CatalogBaseUrl { get; }
|
string CatalogBaseUrl { get; }
|
||||||
/**
|
|
||||||
* AutoComplete generation
|
|
||||||
*/
|
|
||||||
AutoCompleteResult AutoComplete(string pkgid, int skip, int take, bool prerelease = false, string packageType = null);
|
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);
|
string[] GetVersions(string pkgid, NuGetVersion parsedVersion, bool prerelease = false, string packageType = null, int skip = 0, int take = 25);
|
||||||
/**
|
IEnumerable<Resource> GetResources(IUnleash unleashĈlient);
|
||||||
* GetResources
|
Task<RegistrationPageIndex> ÛpdateCatalogForAsync(Commit commit);
|
||||||
*/
|
|
||||||
IEnumerable<Resource> GetResources();
|
|
||||||
/**
|
|
||||||
* UpdateCatalogForAsync
|
|
||||||
*/
|
|
||||||
Task<RegistrationPageIndex> UpdateCatalogForAsync(Commit commit);
|
|
||||||
/**
|
|
||||||
* DeletePackageAsync
|
|
||||||
*/
|
|
||||||
Task<PackageDeletionReport> DeletePackageAsync(string pkgid, string version, string type);
|
Task<PackageDeletionReport> DeletePackageAsync(string pkgid, string version, string type);
|
||||||
|
|
||||||
/**
|
|
||||||
* UserAskForPackageDeletionAsync
|
|
||||||
*/
|
|
||||||
Task<PackageDeletionReport> UserAskForPackageDeletionAsync(string userid, string pkgId, string lower, string type);
|
Task<PackageDeletionReport> UserAskForPackageDeletionAsync(string userid, string pkgId, string lower, string type);
|
||||||
|
|
||||||
/**
|
|
||||||
* GetPackageAsync
|
|
||||||
*/
|
|
||||||
Task<PackageVersion> GetPackageAsync(string pkgid, string version, string type);
|
Task<PackageVersion> GetPackageAsync(string pkgid, string version, string type);
|
||||||
|
|
||||||
/**
|
|
||||||
* GetCatalogEntryAsync
|
|
||||||
*/
|
|
||||||
Task<CatalogEntry> GetCatalogEntryAsync(string pkgId, string version, string pkgType);
|
Task<CatalogEntry> GetCatalogEntryAsync(string pkgId, string version, string pkgType);
|
||||||
/**
|
|
||||||
* SearchCatalogEntriesById
|
|
||||||
*/
|
|
||||||
IEnumerable<CatalogEntry> SearchCatalogEntriesById(string pkgId, string semver, string pkgType);
|
IEnumerable<CatalogEntry> SearchCatalogEntriesById(string pkgId, string semver, string pkgType);
|
||||||
|
|
||||||
/**
|
|
||||||
* GetCatalogIndexAsync
|
|
||||||
*/
|
|
||||||
Task<RegistrationPageIndex> GetCatalogIndexAsync();
|
Task<RegistrationPageIndex> GetCatalogIndexAsync();
|
||||||
/**
|
|
||||||
* GetPackageRegistrationIndexAsync
|
|
||||||
*/
|
|
||||||
Task<RegistrationPageIndex> GetPackageRegistrationIndexAsync(RegistrationPageIndexQuery query);
|
Task<RegistrationPageIndex> GetPackageRegistrationIndexAsync(RegistrationPageIndexQuery query);
|
||||||
/**
|
|
||||||
* SearchPackageAsync
|
|
||||||
*/
|
|
||||||
Task<RegistrationPageIndex> SearchPackageAsync(RegistrationPageIndexQuery query);
|
Task<RegistrationPageIndex> SearchPackageAsync(RegistrationPageIndexQuery query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,21 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Isn.Abstract;
|
using isn.Abstract;
|
||||||
using isnd.Data;
|
using isnd.Data;
|
||||||
using isnd.Data.Catalog;
|
using isnd.Data.Catalog;
|
||||||
using isnd.Data.Packages;
|
using isnd.Data.Packages;
|
||||||
|
using isnd.Data.Packages.Catalog;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
|
using isnd.Helpers;
|
||||||
using isnd.Interfaces;
|
using isnd.Interfaces;
|
||||||
using isnd.ViewModels;
|
using isnd.ViewModels;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using NuGet.Versioning;
|
using NuGet.Versioning;
|
||||||
|
using Unleash;
|
||||||
|
|
||||||
namespace isnd.Services
|
namespace isnd.Services
|
||||||
{
|
{
|
||||||
|
|
@ -21,11 +25,6 @@ namespace isnd.Services
|
||||||
|
|
||||||
ApplicationDbContext dbContext;
|
ApplicationDbContext dbContext;
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for the PackageManager class.
|
|
||||||
* @param dbContext The database context.
|
|
||||||
* @param siteConfigOptionsOptions The options for the IsndSettings configuration.
|
|
||||||
*/
|
|
||||||
public PackageManager(ApplicationDbContext dbContext,
|
public PackageManager(ApplicationDbContext dbContext,
|
||||||
IOptions<IsndSettings> siteConfigOptionsOptions)
|
IOptions<IsndSettings> siteConfigOptionsOptions)
|
||||||
{
|
{
|
||||||
|
|
@ -34,11 +33,7 @@ namespace isnd.Services
|
||||||
extUrl = isndSettings.ExternalUrl + "/";
|
extUrl = isndSettings.ExternalUrl + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public IEnumerable<Resource> GetResources(IUnleash unleashClient)
|
||||||
* GetResources
|
|
||||||
*/
|
|
||||||
|
|
||||||
public IEnumerable<Resource> GetResources()
|
|
||||||
{
|
{
|
||||||
|
|
||||||
var res = new List<Resource>
|
var res = new List<Resource>
|
||||||
|
|
@ -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."
|
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;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* AutoComplete generation
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
public AutoCompleteResult AutoComplete(string id,
|
public AutoCompleteResult AutoComplete(string id,
|
||||||
int skip, int take, bool prerelease = false,
|
int skip, int take, bool prerelease = false,
|
||||||
string packageType = null)
|
string packageType = null)
|
||||||
|
|
@ -116,24 +135,18 @@ namespace isnd.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CatalogBaseUrl
|
|
||||||
*/
|
|
||||||
public string CatalogBaseUrl => extUrl;
|
public string CatalogBaseUrl => extUrl;
|
||||||
|
|
||||||
private IsndSettings isndSettings;
|
private IsndSettings isndSettings;
|
||||||
private string extUrl;
|
private string extUrl;
|
||||||
/**
|
|
||||||
* GetCatalogIndexAsync
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
public virtual async Task<RegistrationPageIndex> GetCatalogIndexAsync()
|
public virtual async Task<RegistrationPageIndex> GetCatalogIndexAsync()
|
||||||
{
|
{
|
||||||
return await UpdateCatalogForAsync(null);
|
return await ÛpdateCatalogForAsync(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<RegistrationPageIndex> UpdateCatalogForAsync(Commit reason = null)
|
public async Task<RegistrationPageIndex> ÛpdateCatalogForAsync(Commit reason = null)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
|
@ -208,7 +221,7 @@ namespace isnd.Services
|
||||||
}
|
}
|
||||||
dbContext.PackageVersions.Remove(pkg);
|
dbContext.PackageVersions.Remove(pkg);
|
||||||
await dbContext.SaveChangesAsync();
|
await dbContext.SaveChangesAsync();
|
||||||
await UpdateCatalogForAsync(commit);
|
await ÛpdateCatalogForAsync(commit);
|
||||||
return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg };
|
return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
|
using System.Linq;
|
||||||
|
using System.Collections.Generic;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
@ -14,46 +15,41 @@ using isnd.Entities;
|
||||||
using isnd.Authorization;
|
using isnd.Authorization;
|
||||||
using isnd.Data.Roles;
|
using isnd.Data.Roles;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Unleash;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using isnd.Helpers;
|
using isnd.Helpers;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using System;
|
using System;
|
||||||
|
using Microsoft.OpenApi.Models;
|
||||||
using System.IO;
|
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.AspNetCore.HttpOverrides;
|
||||||
using Microsoft.OpenApi;
|
|
||||||
|
|
||||||
namespace isnd
|
namespace isnd
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* Startup class for configuring services and the app's request pipeline.
|
|
||||||
*/
|
|
||||||
public class Startup
|
public class Startup
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for the Startup class.
|
|
||||||
* @param config The configuration object.
|
|
||||||
*/
|
|
||||||
public Startup(IConfiguration config)
|
public Startup(IConfiguration config)
|
||||||
{
|
{
|
||||||
Configuration = config;
|
Configuration = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* The configuration object.
|
|
||||||
*/
|
|
||||||
public static IConfiguration Configuration { get; private set; }
|
public static IConfiguration Configuration { get; private set; }
|
||||||
|
|
||||||
/**
|
// This method gets called by the runtime. Use this method to add services to the container.
|
||||||
* This method gets called by the runtime. Use this method to add services to the container.
|
|
||||||
* @param services The service collection.
|
|
||||||
*/
|
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
var smtpSettingsconf = Configuration.GetSection("Smtp");
|
var smtpSettingsconf = Configuration.GetSection("Smtp");
|
||||||
var isndSettingsconf = Configuration.GetSection("Isn");
|
var isndSettingsconf = Configuration.GetSection("Isn");
|
||||||
var adminStartupListConf = Configuration.GetSection("AdminList");
|
var adminStartupListConf = Configuration.GetSection("AdminList");
|
||||||
|
var unleashConf = Configuration.GetSection("Unleash");
|
||||||
|
|
||||||
services.Configure<ForwardedHeadersOptions>(options =>
|
services.Configure<ForwardedHeadersOptions>(options =>
|
||||||
{
|
{
|
||||||
|
|
@ -61,26 +57,14 @@ namespace isnd
|
||||||
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
||||||
});
|
});
|
||||||
|
|
||||||
var connectionString = Configuration.GetConnectionString("DefaultConnection");
|
|
||||||
var useInMemoryDatabase = Configuration.GetValue<bool>("UseInMemoryDatabase") ||
|
|
||||||
string.IsNullOrWhiteSpace(connectionString) ||
|
|
||||||
connectionString.Contains("<", StringComparison.Ordinal);
|
|
||||||
|
|
||||||
services.Configure<SmtpSettings>(smtpSettingsconf)
|
services.Configure<SmtpSettings>(smtpSettingsconf)
|
||||||
.Configure<IsndSettings>(isndSettingsconf)
|
.Configure<IsndSettings>(isndSettingsconf)
|
||||||
.Configure<AdminStartupList>(adminStartupListConf)
|
.Configure<AdminStartupList>(adminStartupListConf)
|
||||||
|
.Configure<UnleashClientSettings>(unleashConf)
|
||||||
.Configure<MigrationsEndPointOptions>(o => o.Path = "~/migrate")
|
.Configure<MigrationsEndPointOptions>(o => o.Path = "~/migrate")
|
||||||
.AddDbContext<ApplicationDbContext>(options =>
|
.AddDbContext<ApplicationDbContext>(options =>
|
||||||
{
|
options.UseNpgsql(
|
||||||
if (useInMemoryDatabase)
|
Configuration.GetConnectionString("DefaultConnection")))
|
||||||
{
|
|
||||||
options.UseInMemoryDatabase("isnd-tests");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
options.UseNpgsql(connectionString);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.AddIdentity<ApplicationUser, IdentityRole>()
|
.AddIdentity<ApplicationUser, IdentityRole>()
|
||||||
.AddRoles<IdentityRole>()
|
.AddRoles<IdentityRole>()
|
||||||
.AddEntityFrameworkStores<ApplicationDbContext>()
|
.AddEntityFrameworkStores<ApplicationDbContext>()
|
||||||
|
|
@ -105,7 +89,20 @@ namespace isnd
|
||||||
.AddTransient<IEmailSender, EmailSender>()
|
.AddTransient<IEmailSender, EmailSender>()
|
||||||
.AddTransient<IPackageManager, PackageManager>()
|
.AddTransient<IPackageManager, PackageManager>()
|
||||||
.AddSingleton<IAuthorizationHandler, ValidApiKeyRequirementHandler>()
|
.AddSingleton<IAuthorizationHandler, ValidApiKeyRequirementHandler>()
|
||||||
.AddAuthentication("Bearer")
|
.AddSingleton(s =>
|
||||||
|
{
|
||||||
|
var config = s.GetRequiredService<IOptions<UnleashClientSettings>>();
|
||||||
|
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<Microsoft.AspNetCore.Hosting.IHostingEnvironment>().CreateUnleahClient(config.Value);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
services.AddAuthentication("Bearer")
|
||||||
.AddJwtBearer("Bearer", options =>
|
.AddJwtBearer("Bearer", options =>
|
||||||
{
|
{
|
||||||
options.Authority = isndSettingsconf.GetValue<string>("ExternalUrl");
|
options.Authority = isndSettingsconf.GetValue<string>("ExternalUrl");
|
||||||
|
|
@ -144,13 +141,7 @@ namespace isnd
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
public void Configure(IApplicationBuilder app,
|
public void Configure(IApplicationBuilder app,
|
||||||
IWebHostEnvironment env,
|
IWebHostEnvironment env,
|
||||||
ApplicationDbContext dbContext,
|
ApplicationDbContext dbContext,
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
|
using Unleash;
|
||||||
|
|
||||||
namespace isnd.ViewModels
|
namespace isnd.ViewModels
|
||||||
{
|
{
|
||||||
public class HomeIndexViewModel
|
public class HomeIndexViewModel
|
||||||
{
|
{
|
||||||
public int PkgCount { get; set; }
|
public int PkgCount { get; set; }
|
||||||
|
public IUnleash UnleashClient;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,8 +3,15 @@
|
||||||
foreach (string leashed in new string[] { "pkg-push", "pkg-get",
|
foreach (string leashed in new string[] { "pkg-push", "pkg-get",
|
||||||
"pkg-autocomplete","pkg-search","pkg-catalog"})
|
"pkg-autocomplete","pkg-search","pkg-catalog"})
|
||||||
{
|
{
|
||||||
|
if (Model.UnleashClient.IsEnabled(leashed))
|
||||||
|
{
|
||||||
|
//do some magic
|
||||||
|
<p>@leashed</p>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
//do old boring stuff
|
//do old boring stuff
|
||||||
<p>No @leashed (disabled)</p>
|
<p>No @leashed (disabled)</p>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
@ -21,6 +21,11 @@
|
||||||
"SenderName": "<from-name>",
|
"SenderName": "<from-name>",
|
||||||
"SenderEmail": "<from-email>"
|
"SenderEmail": "<from-email>"
|
||||||
},
|
},
|
||||||
|
"Unleash":
|
||||||
|
{
|
||||||
|
"ClientApiKey": "lame-unleash-client-api-key",
|
||||||
|
"ApiUrl": "http://localhost:4242/api/"
|
||||||
|
},
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Warning"
|
"Default": "Warning"
|
||||||
|
|
|
||||||
|
|
@ -1,42 +1,48 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
|
<UserSecretsId>85fd766d-5d23-4476-aed1-463b2942e86a</UserSecretsId>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<NoWarn>NETSDK1138,CS1591,MSB3243</NoWarn>
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
<Version>1.0.0</Version>
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
|
<Version>1.0.7</Version>
|
||||||
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="GitVersion.MsBuild" Version="6.8.1">
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.9" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="10.0.9" />
|
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.5" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.9">
|
</ItemGroup>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.4" />
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" IncludeAssets="All" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.4" />
|
||||||
|
|
||||||
|
<PackageReference Include="NuGet.Packaging.Core" Version="6.5.0" />
|
||||||
|
<PackageReference Include="MailKit" Version="3.6.0" />
|
||||||
|
<PackageReference Include="unleash.client" Version="2.4.3" />
|
||||||
|
<PackageReference Include="GitVersion.MsBuild" Version="5.12.0">
|
||||||
|
<PrivateAssets>All</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.9" />
|
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="7.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.9" />
|
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="10.0.2" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="10.0.9" />
|
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.2" IncludeAssets="All" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.9" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.9" />
|
|
||||||
<PackageReference Include="NuGet.Packaging.Core" Version="6.9.1" />
|
|
||||||
<PackageReference Include="MailKit" Version="4.17.0" />
|
|
||||||
<PackageReference Include="unleash.client" Version="6.2.1" />
|
|
||||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="10.0.9" />
|
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.2.3" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.9" />
|
|
||||||
|
|
||||||
<ProjectReference Include="..\isn.abstract\isn.abstract.csproj" />
|
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\LICENSE" Pack="true" PackagePath="LICENSE" />
|
<None Include="..\..\LICENSE" Pack="true" PackagePath="LICENSE" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@
|
||||||
<RootNamespace>test_isn</RootNamespace>
|
<RootNamespace>test_isn</RootNamespace>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
<Version>1.0.0</Version>
|
<Version>1.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,137 +1,29 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Data;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Xml;
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using isn.Abstract;
|
||||||
|
using System.Linq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using isn.abst;
|
||||||
using isnd.Entities;
|
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<string, SourceSettings>
|
|
||||||
{
|
|
||||||
[sourceUrl] = new SourceSettings { Alias = "test" }
|
|
||||||
},
|
|
||||||
DefaultSourceKey = sourceUrl
|
|
||||||
};
|
|
||||||
|
|
||||||
File.WriteAllText(configPath, JsonConvert.SerializeObject(settings, Formatting.Indented));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Tests : IClassFixture<LocalSourceFixture>
|
|
||||||
{
|
|
||||||
private readonly LocalSourceFixture fixture;
|
|
||||||
|
|
||||||
public Tests(LocalSourceFixture fixture)
|
|
||||||
{
|
|
||||||
this.fixture = fixture;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void HaveADefaultDataProtector()
|
public void HaveADefaultDataProtector()
|
||||||
{
|
{
|
||||||
var pass = "a lame and big pass";
|
string pass = "a lame and big pass";
|
||||||
IDataProtector protector = new DefaultDataProtector();
|
isn.IDataProtector _protector = new isn.DefaultDataProtector();
|
||||||
var protectedpass = protector.Protect(pass);
|
string protectedpass = _protector.Protect(pass);
|
||||||
var unprotectedpass = protector.UnProtect(protectedpass);
|
string unprotectedpass = _protector.UnProtect(protectedpass);
|
||||||
Console.WriteLine(protectedpass);
|
Console.WriteLine(protectedpass);
|
||||||
Assert.Equal(pass, unprotectedpass);
|
Assert.Equal(pass, unprotectedpass);
|
||||||
Assert.True(protectedpass != null);
|
Assert.True(protectedpass != null);
|
||||||
|
|
@ -141,32 +33,33 @@ namespace Isn.tests
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task TestHttpClient()
|
public async Task TestHttpClient()
|
||||||
{
|
{
|
||||||
using var client = new HttpClient();
|
string url = "https://isn.pschneider.fr/" + ApiConfig.IndexDotJson;
|
||||||
var response = await client.GetAsync(fixture.SourceUrl);
|
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 json = await response.Content.ReadAsStringAsync();
|
||||||
var vm = JsonConvert.DeserializeObject<ApiIndexViewModel>(json);
|
var vm = JsonConvert.DeserializeObject<ApiIndexViewModel>(json);
|
||||||
Console.WriteLine(JsonConvert.SerializeObject(vm));
|
Console.WriteLine(JsonConvert.SerializeObject(vm));
|
||||||
Assert.NotNull(vm);
|
Assert.NotNull(vm);
|
||||||
Assert.NotNull(vm.Resources);
|
Assert.NotNull(vm.Resources);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TestPush()
|
public void TestPush()
|
||||||
{
|
{
|
||||||
Program.LoadConfig();
|
Program.LoadConfig();
|
||||||
var report = Program.PushPkg(new[] { Path.Combine(AppContext.BaseDirectory, "dummy.nupkg") });
|
var report = Program.PushPkg(new string[] { "/home/paul/Nupkgs/Yavsc.Abstract.1.0.8."
|
||||||
Assert.NotNull(report);
|
+ Constants.PaquetFileEstension });
|
||||||
Assert.Single(report);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void GetServerResourcesUsingHttpClientAsyncTest()
|
public void GetServerResourcesUsingHttpClientAsyncTest()
|
||||||
{
|
{
|
||||||
var model = SourceHelpers.GetServerResources(fixture.SourceUrl);
|
var model = SourceHelpers.GetServerResources("Https://isn.pschneider.fr/index.json");
|
||||||
Console.WriteLine(JsonConvert.SerializeObject(model));
|
Console.WriteLine(JsonConvert.SerializeObject(model));
|
||||||
Assert.NotNull(model.Resources);
|
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);
|
Assert.True(pub != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,18 +1,20 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
<Version>1.0.0</Version>
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
|
<Version>1.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.4.2" />
|
||||||
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
||||||
<PackageReference Include="xunit.runner.reporters" Version="2.9.3" />
|
<PackageReference Include="xunit.runner.reporters" Version="2.4.2" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2" />
|
||||||
<PackageToolReference Include="xunit.runner.console" Version="2.9.3" PrivateAssets="All" />
|
<PackageToolReference Include="xunit.runner.console" Version="2.4.2" PrivateAssets="All" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\src\isn\isn.csproj" />
|
<ProjectReference Include="..\..\src\isn\isn.csproj" />
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System;
|
using System;
|
||||||
using System.Net.Http;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore;
|
using Microsoft.AspNetCore;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -17,7 +16,6 @@ using NuGet.Protocol;
|
||||||
using NuGet.Configuration;
|
using NuGet.Configuration;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using NuGet.Protocol.Core.Types;
|
using NuGet.Protocol.Core.Types;
|
||||||
using NuGet.Common;
|
|
||||||
|
|
||||||
namespace isnd.host.tests
|
namespace isnd.host.tests
|
||||||
{
|
{
|
||||||
|
|
@ -37,16 +35,9 @@ namespace isnd.host.tests
|
||||||
{
|
{
|
||||||
var services = serviceScope.ServiceProvider;
|
var services = serviceScope.ServiceProvider;
|
||||||
var myDependency = services.GetRequiredService<ApplicationDbContext>();
|
var myDependency = services.GetRequiredService<ApplicationDbContext>();
|
||||||
if (myDependency.Database.ProviderName?.Contains("InMemory", StringComparison.OrdinalIgnoreCase) == true)
|
|
||||||
{
|
|
||||||
myDependency.Database.EnsureCreated();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
myDependency.Database.Migrate();
|
myDependency.Database.Migrate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
void TestDropUser()
|
void TestDropUser()
|
||||||
|
|
@ -70,15 +61,17 @@ namespace isnd.host.tests
|
||||||
public void NugetInstallsTest()
|
public void NugetInstallsTest()
|
||||||
{
|
{
|
||||||
using (var serviceScope = server.Host.Services.CreateScope())
|
using (var serviceScope = server.Host.Services.CreateScope())
|
||||||
{
|
{ var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
||||||
var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json";
|
||||||
string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json";
|
ProcessStartInfo psi = new ProcessStartInfo("nuget");
|
||||||
using var client = new HttpClient();
|
psi.ArgumentList.Add("install");
|
||||||
var response = client.GetAsync(pkgSourceUrl).GetAwaiter().GetResult();
|
psi.ArgumentList.Add("gitversion");
|
||||||
var body = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
psi.ArgumentList.Add("-PreRelease");
|
||||||
|
psi.ArgumentList.Add("-Source");
|
||||||
Assert.True(response.IsSuccessStatusCode, $"Expected {pkgSourceUrl} to be reachable but got {(int)response.StatusCode} {response.ReasonPhrase}");
|
psi.ArgumentList.Add(pkgSourceUrl);
|
||||||
Assert.False(string.IsNullOrWhiteSpace(body));
|
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())
|
using (var serviceScope = server.Host.Services.CreateScope())
|
||||||
{ var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
{ var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
||||||
string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json";
|
string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json";
|
||||||
NullThrottle throttle = new NullThrottle();
|
NullThrottle throttle = new NullThrottle();
|
||||||
|
|
||||||
PackageSource packageSource = new PackageSource(pkgSourceUrl);
|
PackageSource packageSource = new PackageSource(pkgSourceUrl);
|
||||||
|
|
@ -103,7 +96,7 @@ namespace isnd.host.tests
|
||||||
using (var serviceScope = server.Host.Services.CreateScope())
|
using (var serviceScope = server.Host.Services.CreateScope())
|
||||||
{
|
{
|
||||||
var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
var isnSettings = serviceScope.ServiceProvider.GetService<IOptions<isnd.Entities.IsndSettings>>().Value;
|
||||||
string pkgSourceUrl = isnSettings.ExternalUrl + "/pkgs/index.json";
|
string pkgSourceUrl = isnSettings.ExternalUrl + "/index.json";
|
||||||
var prov = new RegistrationResourceV3Provider();
|
var prov = new RegistrationResourceV3Provider();
|
||||||
var source = new PackageSource(pkgSourceUrl);
|
var source = new PackageSource(pkgSourceUrl);
|
||||||
var repo = new SourceRepository(source, new INuGetResourceProvider[]{ prov });
|
var repo = new SourceRepository(source, new INuGetResourceProvider[]{ prov });
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,8 @@ namespace isnd.tests
|
||||||
.UseStartup(typeof(Startup))
|
.UseStartup(typeof(Startup))
|
||||||
.ConfigureAppConfiguration((builderContext, config) =>
|
.ConfigureAppConfiguration((builderContext, config) =>
|
||||||
{
|
{
|
||||||
config.AddJsonFile("appsettings.json", optional: false);
|
config.AddJsonFile("appsettings.json", false);
|
||||||
config.AddJsonFile("appsettings.Development.json", optional: true);
|
config.AddJsonFile("appsettings.Development.json", false);
|
||||||
});
|
});
|
||||||
|
|
||||||
Host = webhostBuilder.Build();
|
Host = webhostBuilder.Build();
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<UserSecretsId>d7144e46-4e63-4391-ba86-64b61f6e7be4</UserSecretsId>
|
<UserSecretsId>d7144e46-4e63-4391-ba86-64b61f6e7be4</UserSecretsId>
|
||||||
<NoWarn>NETSDK1138</NoWarn>
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<FileVersion>1.0.7.0</FileVersion>
|
||||||
<InformationalVersion>1.0.0+Branch.main.Sha.654065d7fef34ba4ed2fb3bca5bc91de9ad16e85</InformationalVersion>
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
<Version>1.0.0</Version>
|
<Version>1.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="XunitXml.TestLogger" Version="3.0.70" />
|
<PackageReference Include="XunitXml.TestLogger" Version="3.0.70" />
|
||||||
|
|
|
||||||
0
test/isnd.tests/wwwroot/favicon.ico
Normal file
0
test/isnd.tests/wwwroot/favicon.ico
Normal file
Loading…
Add table
Add a link
Reference in a new issue