Skip to content

Commit

Permalink
Merge pull request #1 from CloudPhoenix/feature/include-service-and-m…
Browse files Browse the repository at this point in the history
…iddlware

Include Service and Middlwares
  • Loading branch information
dedo1911 authored Jun 5, 2024
2 parents 77386e5 + 94a2357 commit eb3eff4
Show file tree
Hide file tree
Showing 23 changed files with 713 additions and 240 deletions.
243 changes: 243 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
# editorconfig.org

# top-most EditorConfig file
root = true

# Default settings:
# A newline ending every file
# Use 4 spaces as indentation
[*]
end_of_line = lf
insert_final_newline = true
indent_size = 4
indent_style = space
trim_trailing_whitespace = true

[*.{json,yml,yaml}]
indent_size = 2

# C# files
[*.cs]

# CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = none

# IDE0290: Use primary constructor
dotnet_diagnostic.IDE0290.severity = none

# CS1591: Do not directly await a Task
dotnet_diagnostic.CA2007.severity = none

# Review SQL queries for security vulnerabilities
dotnet_diagnostic.CA2100.severity = none

# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = false
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current

# Modifier preferences
csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:suggestion

# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Types: use keywords instead of BCL types, and permit var only when the type is clear
csharp_style_var_for_built_in_types = false:suggestion
csharp_style_var_when_type_is_apparent = false:none
csharp_style_var_elsewhere = false:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case

# static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = none

# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case

# Code style defaults
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:refactoring
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion

# Code style extensions
csharp_style_namespace_declarations = file_scoped:warning
dotnet_diagnostic.SA1000.severity = warning # Keywords must be spaced correctly
dotnet_diagnostic.SA1001.severity = warning # Commas must be spaced correctly
dotnet_diagnostic.SA1005.severity = warning # Single line comments must begin with single space
dotnet_diagnostic.SA1012.severity = warning # Opening braces must be spaced correctly
dotnet_diagnostic.SA1013.severity = warning # Closing braces must be spaced correctly
dotnet_diagnostic.SA1015.severity = warning # Closing generic brackets must be spaced correctly
dotnet_diagnostic.SA1025.severity = warning # Code must not contain multiple whitespace in a row
dotnet_diagnostic.SA1026.severity = warning # Code must not contain space after new keyword in implicitly typed array allocation
dotnet_diagnostic.SA1110.severity = warning # Opening parenthesis must be on declaration line
dotnet_diagnostic.SA1115.severity = warning # Parameter must follow comma
dotnet_diagnostic.SA1116.severity = warning # Split parameters must start on line after declaration
dotnet_diagnostic.SA1117.severity = warning # Parameters must be on same line or separate lines
dotnet_diagnostic.SA1119.severity = warning # Statement must not use unnecessary parenthesis
dotnet_diagnostic.SA1121.severity = warning # Use built in type alias
dotnet_diagnostic.SA1122.severity = warning # Use `string.Empty` for empty strings
dotnet_diagnostic.SA1127.severity = warning # Generic type constraints must be on own line
dotnet_diagnostic.SA1128.severity = warning # Constructor initializer must be on own line
dotnet_diagnostic.SA1129.severity = warning # Do not use default value type constructor
dotnet_diagnostic.SA1137.severity = warning # Elements should have the same indentation
dotnet_diagnostic.SA1201.severity = warning # Elements must appear in the correct order
dotnet_diagnostic.SA1202.severity = warning # Elements must be ordered by access
dotnet_diagnostic.SA1203.severity = warning # Constants must appear before fields
dotnet_diagnostic.SA1204.severity = warning # Static elements must appear before instance elements
dotnet_diagnostic.SA1208.severity = warning # System using directives must be placed before other using directives
dotnet_diagnostic.SA1209.severity = warning # Using alias directives must be placed after other using directives
dotnet_diagnostic.SA1210.severity = warning # Using directives must be ordered alphabetically by namespace
dotnet_diagnostic.SA1211.severity = warning # Using alias directives must be ordered alphabetically by alias name
dotnet_diagnostic.SA1214.severity = warning # Readonly elements must appear before non readonly elements
dotnet_diagnostic.SA1216.severity = warning # Using static directives must be placed at the correct location
dotnet_diagnostic.SA1303.severity = warning # Const field names must begin with upper case letter
dotnet_diagnostic.SA1306.severity = warning # Field names must begin with lower case letter
dotnet_diagnostic.SA1308.severity = warning # Variable names must not be prefixed
dotnet_diagnostic.SA1312.severity = warning # Variable names must begin with lower case letter
dotnet_diagnostic.SA1313.severity = warning # Parameter names must begin with lower case letter
dotnet_diagnostic.SA1316.severity = warning # Tuple element names should use correct casing
dotnet_diagnostic.SA1400.severity = warning # Access modifier must be declared
dotnet_diagnostic.SA1408.severity = warning # Conditional expressions must declare precedence
dotnet_diagnostic.SA1413.severity = warning # Use trailing commas in multiline initializers
dotnet_diagnostic.SA1500.severity = warning # Braces for multi line statements must not share line
dotnet_diagnostic.SA1501.severity = warning # Statement must not be on single line
dotnet_diagnostic.SA1502.severity = warning # Element must not be on single line
dotnet_diagnostic.SA1503.severity = warning # Braces must not be omitted
dotnet_diagnostic.SA1505.severity = warning # Opening braces must not be followed by blank line
dotnet_diagnostic.SA1507.severity = warning # Code must not contain multiple blank lines in aRow
dotnet_diagnostic.SA1508.severity = warning # Closing braces must not be preceded by blank line
dotnet_diagnostic.SA1512.severity = warning # Single line comments must not be followed by blank line
dotnet_diagnostic.SA1513.severity = warning # Closing brace must be followed by blank line
dotnet_diagnostic.SA1515.severity = warning # Single line comment must be preceded by blank line
dotnet_diagnostic.SA1516.severity = warning # Elements must be separated by blank line
dotnet_diagnostic.SA1518.severity = warning # Use line endings correctly at end of file
dotnet_diagnostic.SA1649.severity = warning # File name must match type name

# Code quality
dotnet_style_readonly_field = true:suggestion
dotnet_code_quality_unused_parameters = non_public:suggestion

# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:refactoring
dotnet_style_prefer_conditional_expression_over_return = true:refactoring
csharp_prefer_simple_default_expression = true:suggestion

# Expression-bodied members
csharp_style_expression_bodied_methods = true:refactoring
csharp_style_expression_bodied_constructors = true:refactoring
csharp_style_expression_bodied_operators = true:refactoring
csharp_style_expression_bodied_properties = true:refactoring
csharp_style_expression_bodied_indexers = true:refactoring
csharp_style_expression_bodied_accessors = true:refactoring
csharp_style_expression_bodied_lambdas = true:refactoring
csharp_style_expression_bodied_local_functions = true:refactoring

# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion

# Null checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Other features
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none

# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# Analyzers
dotnet_code_quality.ca1802.api_surface = private, internal

# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2

# Xml build files
[*.builds]
indent_size = 2

# Xml files
[*.{xml,stylecop,resx,ruleset}]
indent_size = 2

# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2

# Shell scripts
[*.{cmd, bat}]
end_of_line = crlf
24 changes: 0 additions & 24 deletions Constants.cs

This file was deleted.

7 changes: 7 additions & 0 deletions Constants/HttpClientConstants.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace NLogFlake.Constants;

internal static class HttpClientConstants
{
internal const int PostTimeoutSeconds = 3;
internal const string ClientName = "LogFlakeClient";
}
8 changes: 8 additions & 0 deletions Constants/QueuesConstants.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace NLogFlake.Constants;

internal static class QueuesConstants
{
internal const string LOGS = "logs";

internal const string PERFORMANCES = "perf";
}
8 changes: 8 additions & 0 deletions Constants/ServersConstants.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace NLogFlake.Constants;

internal static class ServersConstants
{
internal const string PRODUCTION = "https://app.logflake.io";

internal const string TEST = "https://app-test.logflake.io";
}
18 changes: 18 additions & 0 deletions ILogFlake.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace NLogFlake;

public interface ILogFlake
{
void SendLog(string content, Dictionary<string, object>? parameters = null);

void SendLog(LogLevels level, string content, Dictionary<string, object>? parameters = null);

void SendLog(LogLevels level, string? correlation, string? content, Dictionary<string, object>? parameters = null);

void SendException(Exception e);

void SendException(Exception e, string? correlation);

void SendPerformance(string label, long duration);

IPerformanceCounter MeasurePerformance(string label);
}
12 changes: 12 additions & 0 deletions IPerformanceCounter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace NLogFlake;

public interface IPerformanceCounter
{
void Start();

void Restart();

long Stop();

long Pause();
}
32 changes: 32 additions & 0 deletions IServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using NLogFlake.Constants;
using NLogFlake.Models.Options;
using NLogFlake.Services;

namespace NLogFlake;

public static class IServiceCollectionExtensions
{
public static IServiceCollection AddLogFlake(this IServiceCollection services, IConfiguration configuration)
{
_ = services.Configure<LogFlakeOptions>(configuration.GetSection(LogFlakeOptions.SectionName))
.AddOptionsWithValidateOnStart<LogFlakeOptions, LogFlakeOptionsValidator>();

services.AddHttpClient(HttpClientConstants.ClientName, ConfigureClient);

services.AddScoped<ICorrelationService, CorrelationService>();

services.AddSingleton<ILogFlake, LogFlake>();
services.AddSingleton<ILogFlakeService, LogFlakeService>();

return services;
}

private static void ConfigureClient(HttpClient client)
{
client.Timeout = TimeSpan.FromSeconds(HttpClientConstants.PostTimeoutSeconds);
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("User-Agent", "logflake-client-netcore/1.5.0");
}
}
Loading

0 comments on commit eb3eff4

Please sign in to comment.