Skip to content

Commit bd8d4bf

Browse files
authored
Merge pull request #15 from PandaTechAM/development
.net 9
2 parents c773d13 + 8e12f84 commit bd8d4bf

17 files changed

+310
-178
lines changed

.editorconfig

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
###############################
2+
# PandaTech Editor Config #
3+
###############################
4+
5+
6+
################################
7+
# ReSharper Generated Settings #
8+
################################
9+
10+
[*]
11+
charset = utf-8-bom
12+
end_of_line = crlf
13+
trim_trailing_whitespace = false
14+
insert_final_newline = false
15+
indent_style = space
16+
indent_size = 4
17+
18+
# Microsoft .NET properties
19+
csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
20+
csharp_style_prefer_utf8_string_literals = true:suggestion
21+
csharp_style_var_elsewhere = true:suggestion
22+
csharp_style_var_for_built_in_types = true:suggestion
23+
csharp_style_var_when_type_is_apparent = true:suggestion
24+
dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
25+
dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
26+
dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
27+
dotnet_naming_rule.unity_serialized_field_rule.severity = warning
28+
dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style
29+
dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
30+
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
31+
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
32+
dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds =
33+
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
34+
dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
35+
dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
36+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
37+
dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
38+
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
39+
dotnet_style_predefined_type_for_member_access = true:suggestion
40+
dotnet_style_qualification_for_event = false:suggestion
41+
dotnet_style_qualification_for_field = false:suggestion
42+
dotnet_style_qualification_for_method = false:suggestion
43+
dotnet_style_qualification_for_property = false:suggestion
44+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
45+
46+
# ReSharper properties
47+
resharper_align_linq_query = true
48+
resharper_align_multiline_calls_chain = true
49+
resharper_apply_auto_detected_rules = false
50+
resharper_braces_for_for = required
51+
resharper_braces_for_foreach = required
52+
resharper_braces_for_ifelse = required
53+
resharper_braces_for_while = required
54+
resharper_cpp_insert_final_newline = true
55+
resharper_csharp_indent_size = 3
56+
resharper_csharp_max_enum_members_on_line = 0
57+
resharper_csharp_tab_width = 3
58+
resharper_csharp_wrap_arguments_style = chop_if_long
59+
resharper_csharp_wrap_parameters_style = chop_if_long
60+
resharper_formatter_off_tag = @formatter:off
61+
resharper_formatter_on_tag = @formatter:on
62+
resharper_formatter_tags_enabled = true
63+
resharper_keep_existing_declaration_parens_arrangement = false
64+
resharper_keep_existing_expr_member_arrangement = false
65+
resharper_keep_existing_initializer_arrangement = false
66+
resharper_keep_existing_switch_expression_arrangement = false
67+
resharper_max_array_initializer_elements_on_line = 0
68+
resharper_max_initializer_elements_on_line = 0
69+
resharper_place_accessorholder_attribute_on_same_line = false
70+
resharper_place_accessor_attribute_on_same_line = false
71+
resharper_place_field_attribute_on_same_line = false
72+
resharper_place_simple_anonymousmethod_on_single_line = false
73+
resharper_place_simple_embedded_statement_on_same_line = false
74+
resharper_place_simple_initializer_on_single_line = false
75+
resharper_place_simple_property_pattern_on_single_line = false
76+
resharper_use_indent_from_vs = false
77+
resharper_wrap_after_property_in_chained_method_calls = true
78+
resharper_wrap_array_initializer_style = chop_if_long
79+
resharper_wrap_chained_method_calls = chop_always
80+
resharper_wrap_linq_expressions = chop_always
81+
resharper_wrap_list_pattern = chop_if_long
82+
resharper_wrap_object_and_collection_initializer_style = chop_always
83+
resharper_wrap_property_pattern = chop_always
84+
85+
# ReSharper inspection severities
86+
resharper_arrange_redundant_parentheses_highlighting = hint
87+
resharper_arrange_this_qualifier_highlighting = hint
88+
resharper_arrange_type_member_modifiers_highlighting = hint
89+
resharper_arrange_type_modifiers_highlighting = hint
90+
resharper_built_in_type_reference_style_for_member_access_highlighting = hint
91+
resharper_built_in_type_reference_style_highlighting = hint
92+
resharper_enforce_foreach_statement_braces_highlighting = warning
93+
resharper_enforce_for_statement_braces_highlighting = warning
94+
resharper_enforce_if_statement_braces_highlighting = warning
95+
resharper_enforce_lock_statement_braces_highlighting = warning
96+
resharper_enforce_using_statement_braces_highlighting = warning
97+
resharper_enforce_while_statement_braces_highlighting = warning
98+
resharper_mvc_action_not_resolved_highlighting = warning
99+
resharper_mvc_area_not_resolved_highlighting = warning
100+
resharper_mvc_controller_not_resolved_highlighting = warning
101+
resharper_mvc_masterpage_not_resolved_highlighting = warning
102+
resharper_mvc_partial_view_not_resolved_highlighting = warning
103+
resharper_mvc_template_not_resolved_highlighting = warning
104+
resharper_mvc_view_component_not_resolved_highlighting = warning
105+
resharper_mvc_view_component_view_not_resolved_highlighting = warning
106+
resharper_mvc_view_not_resolved_highlighting = warning
107+
resharper_razor_assembly_not_resolved_highlighting = warning
108+
resharper_redundant_base_qualifier_highlighting = warning
109+
resharper_web_config_module_not_resolved_highlighting = warning
110+
resharper_web_config_type_not_resolved_highlighting = warning
111+
resharper_web_config_wrong_module_highlighting = warning
112+
113+
[{*.har,*.jsb2,*.jsb3,*.json,*.jsonc,*.postman_collection,*.postman_collection.json,*.postman_environment,*.postman_environment.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,.ws-context,bowerrc,jest.config}]
114+
indent_style = space
115+
indent_size = 2
116+
117+
[{*.yaml,*.yml}]
118+
indent_style = space
119+
indent_size = 2
120+
121+
[*.cs]
122+
indent_style = space
123+
indent_size = 3
124+
tab_width = 3
125+
126+
[*.{appxmanifest,asax,ascx,aspx,axaml,build,c,c++,c++m,cc,ccm,cginc,compute,cp,cpp,cppm,cshtml,cu,cuh,cxx,cxxm,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,hh,hlsl,hlsli,hlslinc,hpp,hxx,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,mxx,nuspec,paml,razor,resw,resx,shader,skin,tpp,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
127+
indent_style = space
128+
indent_size = 4
129+
tab_width = 4
130+
131+
#########################
132+
# Custom added settings #
133+
#########################
134+
[*.cs]
135+
dotnet_diagnostic.cs8600.severity = error #Converting null literal or possible null value to non-nullable type.
136+
dotnet_diagnostic.cs8601.severity = error #Possible null reference assignment.
137+
dotnet_diagnostic.cs8602.severity = error #possible dereference of a null reference
138+
dotnet_diagnostic.cs8603.severity = error #possible null reference return
139+
dotnet_diagnostic.cs8604.severity = error #possible null reference argument for parameter
140+
dotnet_diagnostic.cs8605.severity = error #Unboxing a possibly null value
141+
dotnet_diagnostic.cs8618.severity = error # Non-nullable field is uninitialized. Consider declaring as nullable.
142+
dotnet_diagnostic.cs8625.severity = error # Cannot convert null literal to non-nullable reference type.
143+
dotnet_diagnostic.cs8762.severity = error # Nullability of reference types in type doesn't match overridden member.
144+
dotnet_diagnostic.cs1717.severity = error #variable is assigned to itself
145+
dotnet_diagnostic.cs1718.severity = error #comparison made to same variable
146+
dotnet_diagnostic.cs0659.severity = error #overriding object.Equals but not overriding object.GetHashCode
147+
dotnet_diagnostic.cs0251.severity = error #Indexing an array with a negative index (array indices always start at zero)
148+
dotnet_diagnostic.s3363.severity = none #Never set DateTime as PrimaryKey. Ignored as we never do it but have warnings for cache entities.
149+
dotnet_diagnostic.ca2016.severity = error #Forwarding cancellation tokens
150+
csharp_style_namespace_declarations = file_scoped:error
151+
resharper_entity_framework_model_validation_unlimited_string_length_highlighting = none
152+
153+
154+
#########################
155+
# VS added settings #
156+
#########################
157+
158+
[*.cs]
159+
csharp_style_namespace_declarations = file_scoped:error
160+
csharp_indent_labels = one_less_than_current
161+
csharp_using_directive_placement = outside_namespace:silent
162+
csharp_prefer_simple_using_statement = true:suggestion
163+
csharp_prefer_braces = true:silent
164+
csharp_style_prefer_method_group_conversion = true:silent
165+
csharp_style_prefer_top_level_statements = true:silent
166+
csharp_style_prefer_primary_constructors = true:suggestion
167+
csharp_style_expression_bodied_methods = false:silent
168+
csharp_style_expression_bodied_constructors = false:silent
169+
csharp_style_expression_bodied_operators = false:silent
170+
csharp_style_expression_bodied_properties = true:silent
171+
csharp_style_expression_bodied_indexers = true:silent
172+
csharp_style_expression_bodied_accessors = true:silent
173+
csharp_style_expression_bodied_lambdas = true:silent
174+
csharp_style_expression_bodied_local_functions = false:silent
175+
176+
[{*.yaml,*.yml}]
177+
dotnet_style_namespace_match_folder = true:suggestion
178+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
179+
tab_width = 3
180+
dotnet_style_coalesce_expression = true:suggestion
181+
dotnet_style_null_propagation = true:suggestion
182+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
183+
dotnet_style_prefer_auto_properties = true:silent
184+
dotnet_style_object_initializer = true:suggestion
185+
dotnet_style_collection_initializer = true:suggestion
186+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
187+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
188+
189+
[*.csv]
190+
indent_style = tab
191+
tab_width = 4

.github/workflows/main.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@ on:
1313
jobs:
1414
deploy:
1515
runs-on: ubuntu-latest
16-
strategy:
17-
matrix:
18-
dotnet-version: [ '8.x.x' ]
16+
1917
steps:
2018
- name: Checkout
21-
uses: actions/checkout@v3
19+
uses: actions/checkout@v4
2220

2321
- name: Setup .NET Core
24-
uses: actions/setup-dotnet@v3
22+
uses: actions/setup-dotnet@v4
2523
with:
26-
dotnet-version: ${{ matrix.dotnet-version }}
24+
global-json-file: global.json
2725

2826
- name: Build
2927
run: dotnet build ${{ env.PROJECT_PATH }}

PandaVaultClient.sln

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
99
.github\workflows\main.yml = .github\workflows\main.yml
1010
.gitignore = .gitignore
1111
Readme.md = Readme.md
12+
global.json = global.json
13+
.editorconfig = .editorconfig
1214
EndProjectSection
1315
EndProject
1416
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5FF94269-0684-4BC1-937A-4CAB4F43D7AB}"

Readme.md

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,6 @@ var app = builder.Build();
5151
app.Run();
5252
```
5353

54-
### Configuration Retrieval (optional)
55-
56-
Additionally you can add service and endpoint for retrieving all active configurations using pandavault secret in request
57-
header.
58-
59-
```csharp
60-
using PandaVaultClient;
61-
62-
var builder = WebApplication.CreateBuilder(args);
63-
builder.Configuration.AddPandaVault(); // Adding PandaVaultConfigurationSource
64-
builder.RegisterPandaVaultEndpoint(); // optional, if you want to use the endpoint for all configurations
65-
66-
var app = builder.Build();
67-
68-
app.MapPandaVaultApi(); // Mapping PandaVaultClient endpoints
69-
70-
app.Run();
71-
```
72-
7354
## License
7455

7556
Pandatech.PandaVaultClient is licensed under the MIT License.

global.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sdk": {
3+
"version": "9.0.100",
4+
"rollForward": "latestMinor"
5+
}
6+
}

src/PandaVaultClient/ConfigurationManagerExtension.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ namespace PandaVaultClient;
66

77
public static class ConfigurationManagerExtension
88
{
9-
public static IConfigurationManager AddPandaVault(this IConfigurationManager configurationManager)
10-
{
11-
configurationManager.Add(new PandaVaultConfigurationSource(configurationManager));
12-
return configurationManager;
13-
}
14-
15-
public static WebApplicationBuilder RegisterPandaVaultEndpoint(this WebApplicationBuilder builder)
16-
{
17-
builder.Services.AddSingleton<PandaVaultConfigurationProvider>();
18-
return builder;
19-
}
9+
public static IConfigurationManager AddPandaVault(this IConfigurationManager configurationManager)
10+
{
11+
configurationManager.Add(new PandaVaultConfigurationSource(configurationManager));
12+
return configurationManager;
13+
}
14+
15+
public static WebApplicationBuilder RegisterPandaVaultEndpoint(this WebApplicationBuilder builder)
16+
{
17+
builder.Services.AddSingleton<PandaVaultConfigurationProvider>();
18+
return builder;
19+
}
2020
}

src/PandaVaultClient/Dtos/AllConfigurationsDto.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
public class AllConfigurationsDto
44
{
5-
public string Key { get; set; } = null!;
6-
public string? Value { get; set; }
5+
public string Key { get; set; } = null!;
6+
public string? Value { get; set; }
77
}

src/PandaVaultClient/Dtos/ConfigurationDto.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ namespace PandaVaultClient.Dtos;
55
[SuppressMessage("ReSharper", "InconsistentNaming")]
66
public class ConfigurationDto
77
{
8-
public string key { get; set; } = null!;
9-
public string value { get; set; } = null!;
8+
public string key { get; set; } = null!;
9+
public string value { get; set; } = null!;
1010
}

src/PandaVaultClient/Dtos/RefreshConfigurationsDto.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
public class RefreshConfigurationsDto
44
{
5-
public string Key { get; set; } = null!;
6-
public string OldValue { get; set; } = null!;
7-
public string UpdatedValue { get; set; } = null!;
8-
public bool Success { get; set; }
9-
public string Message { get; set; } = null!;
5+
public string Key { get; set; } = null!;
6+
public string OldValue { get; set; } = null!;
7+
public string UpdatedValue { get; set; } = null!;
8+
public bool Success { get; set; }
9+
public string Message { get; set; } = null!;
1010
}

src/PandaVaultClient/HttpHelper.cs

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,33 @@
33
using PandaVaultClient.Dtos;
44

55
namespace PandaVaultClient;
6+
67
public static class HttpHelper
78
{
8-
private static readonly string Url = Environment.GetEnvironmentVariable("PANDAVAULT_URL")!;
9-
private static readonly string Secret = Environment.GetEnvironmentVariable("PANDAVAULT_SECRET")!;
10-
11-
public static async Task<List<ConfigurationDto>> FetchConfigurationsAsync()
12-
{
13-
const string endpoint = "/api/v1/vault-configs";
14-
using var client = new HttpClient();
9+
private static readonly string Url = Environment.GetEnvironmentVariable("PANDAVAULT_URL")!;
10+
private static readonly string Secret = Environment.GetEnvironmentVariable("PANDAVAULT_SECRET")!;
11+
12+
public static async Task<List<ConfigurationDto>> FetchConfigurationsAsync()
13+
{
14+
const string endpoint = "/api/v1/vault-configs";
15+
using var client = new HttpClient();
1516

16-
client.DefaultRequestHeaders.Add("secret", Secret);
17-
var response = await client.GetAsync($"{Url}{endpoint}");
18-
if (response.StatusCode == HttpStatusCode.BadRequest)
19-
{
20-
throw new HttpRequestException("PANDAVAULT_SECRET environment variable's value is not correct", null,
21-
response.StatusCode);
22-
}
17+
client.DefaultRequestHeaders.Add("secret", Secret);
18+
var response = await client.GetAsync($"{Url}{endpoint}");
19+
if (response.StatusCode == HttpStatusCode.BadRequest)
20+
{
21+
throw new HttpRequestException("PANDAVAULT_SECRET environment variable's value is not correct",
22+
null,
23+
response.StatusCode);
24+
}
2325

24-
if (!response.IsSuccessStatusCode)
25-
{
26-
throw new HttpRequestException("Failed to retrieve configuration data from the HTTP endpoint.", null,
27-
response.StatusCode);
28-
}
26+
if (!response.IsSuccessStatusCode)
27+
{
28+
throw new HttpRequestException("Failed to retrieve configuration data from the HTTP endpoint.",
29+
null,
30+
response.StatusCode);
31+
}
2932

30-
return (await response.Content.ReadFromJsonAsync<List<ConfigurationDto>>())!;
31-
}
33+
return (await response.Content.ReadFromJsonAsync<List<ConfigurationDto>>())!;
34+
}
3235
}

0 commit comments

Comments
 (0)