From fd894e11e5dc7eb075c70f76c7c485f3aef91303 Mon Sep 17 00:00:00 2001 From: Christopher Schuchardt Date: Thu, 20 Feb 2025 05:07:00 -0500 Subject: [PATCH 1/2] Fixes --- .editorconfig | 320 ++++++++++++++++++ .gitattributes | 70 ++++ .github/workflows/main.yml | 93 +++++ .github/workflows/nuget.yml | 47 +++ .github/workflows/pkgs-delete.yml | 27 ++ .github/workflows/test.yml | 25 -- .gitignore | 271 ++++++++++++++- CONTRIBUTING.md | 82 +++++ LICENSE | 2 +- NuGet.Config | 17 +- README.md | 163 ++++++++- SECURITY.md | 13 + SpellingExclusions.dic | 0 global.json | 7 + .../Neo.FileStorage.API.csproj | 33 +- src/Neo.FileStorage.API/NeoFS.API.0.3.5.nupkg | Bin 253869 -> 0 bytes .../Neo.FileStorage.API.UnitTests.csproj | 50 +-- .../Netmap/UT_Selector.cs | 2 +- 18 files changed, 1124 insertions(+), 98 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/nuget.yml create mode 100644 .github/workflows/pkgs-delete.yml delete mode 100644 .github/workflows/test.yml create mode 100644 CONTRIBUTING.md create mode 100644 SECURITY.md create mode 100644 SpellingExclusions.dic create mode 100644 global.json delete mode 100644 src/Neo.FileStorage.API/NeoFS.API.0.3.5.nupkg diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4f76e26 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,320 @@ +############################### +# Core EditorConfig Options # +############################### + +# dotnet-format requires version 3.1.37601 +# dotnet tool update -g dotnet-format +# remember to have: git config --global core.autocrlf false #(which is usually default) + +# top-most EditorConfig file +root = true + +# Don't use tabs for indentation. +[*] +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 +end_of_line = lf + +# (Please don't specify an indent_size here; that has too many unintended consequences.) +spelling_exclusion_path = SpellingExclusions.dic + +# Code files +[*.{cs,csx,vb,vbx}] +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 + +# XML project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 + +# XML config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_size = 2 + +# JSON files +[*.json] +indent_size = 2 + +# Powershell files +[*.ps1] +indent_size = 2 + +# Shell script files +[*.sh] +end_of_line = lf +indent_size = 2 + +# YAML files +[*.yml] +end_of_line = lf +indent_size = 2 + +# Dotnet code style settings: +[*.{cs,vb}] +# Use block-scoped namespace +csharp_style_namespace_declarations = block_scoped:error +dotnet_diagnostic.IDE0160.severity = error +dotnet_diagnostic.IDE0161.severity = error + +# Member can be made 'readonly' +csharp_style_prefer_readonly_struct_member = true +dotnet_diagnostic.IDE0251.severity = warning +dotnet_diagnostic.IDE0044.severity = warning + +dotnet_diagnostic.CS1591.severity = silent + +# Sort using and Import directives with System.* appearing first +dotnet_sort_system_directives_first = false +dotnet_separate_import_directive_groups = false + +# Avoid "this." and "Me." if not necessary +dotnet_style_qualification_for_field = false:warning +dotnet_style_qualification_for_property = false:warning +dotnet_style_qualification_for_method = false:warning +dotnet_style_qualification_for_event = false:warning + +# Use language keywords instead of framework type names for type references +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# Suggest more modern language features when available +dotnet_style_object_initializer = true:warning +dotnet_style_collection_initializer = true:warning +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion + +# Whitespace options +dotnet_style_allow_multiple_blank_lines_experimental = false + +# Non-private static fields are PascalCase +dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields +dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style + +dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field +dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected +dotnet_naming_symbols.non_private_static_fields.required_modifiers = static + +dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case + +# Non-private readonly fields are PascalCase +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.symbols = non_private_readonly_fields +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.style = non_private_readonly_field_style + +dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field +dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected +dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly + +dotnet_naming_style.non_private_readonly_field_style.capitalization = pascal_case + +# Constants are PascalCase +dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants +dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style + +dotnet_naming_symbols.constants.applicable_kinds = field, local +dotnet_naming_symbols.constants.required_modifiers = const + +dotnet_naming_style.constant_style.capitalization = pascal_case + +# Static fields are camelCase and start with s_ +dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion +dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields +dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style + +dotnet_naming_symbols.static_fields.applicable_kinds = field +dotnet_naming_symbols.static_fields.required_modifiers = static + +dotnet_naming_style.static_field_style.capitalization = camel_case +dotnet_naming_style.static_field_style.required_prefix = s_ + +# Instance fields are camelCase and start with _ +dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion +dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields +dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style + +dotnet_naming_symbols.instance_fields.applicable_kinds = field + +dotnet_naming_style.instance_field_style.capitalization = camel_case +dotnet_naming_style.instance_field_style.required_prefix = _ + +# Locals and parameters are camelCase +dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion +dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters +dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style + +dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local + +dotnet_naming_style.camel_case_style.capitalization = camel_case + +# Local functions are PascalCase +dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions +dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style + +dotnet_naming_symbols.local_functions.applicable_kinds = local_function + +dotnet_naming_style.local_function_style.capitalization = pascal_case + +# By default, name items with PascalCase +dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members +dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style + +dotnet_naming_symbols.all_members.applicable_kinds = * + +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +file_header_template = Copyright (C) 2015-2025 The Neo Project.\n\n{fileName} file belongs to the neo project and is free\nsoftware distributed under the MIT software license, see the\naccompanying file LICENSE in the main directory of the\nrepository or http://www.opensource.org/licenses/mit-license.php\nfor more details.\n\nRedistribution and use in source and binary forms with or without\nmodifications are permitted. + +# Require file header +dotnet_diagnostic.IDE0073.severity = error + +# RS0016: Only enable if API files are present +dotnet_public_api_analyzer.require_api_files = true + +# IDE0055: Fix formatting +# Workaround for https://github.com/dotnet/roslyn/issues/70570 +dotnet_diagnostic.IDE0055.severity = warning + +# CSharp code style settings: +[*.cs] +# Newline settings +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 = true +csharp_indent_switch_labels = true +csharp_indent_labels = flush_left + +# Whitespace options +csharp_style_allow_embedded_statements_on_same_line_experimental = false +csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false +csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false +csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = false +csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = false + +# Prefer "var" everywhere +csharp_style_var_for_built_in_types = true:suggestion +csharp_style_var_when_type_is_apparent = true:suggestion +csharp_style_var_elsewhere = true:suggestion + +# Prefer method-like constructs to have a block body +csharp_style_expression_bodied_methods = false:none +csharp_style_expression_bodied_constructors = false:none +csharp_style_expression_bodied_operators = false:none + +# Prefer property-like constructs to have an expression-body +csharp_style_expression_bodied_properties = true:none +csharp_style_expression_bodied_indexers = true:none +csharp_style_expression_bodied_accessors = true:none + +# Suggest more modern language features when available +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 +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion +csharp_style_prefer_extended_property_pattern = true:suggestion + +# 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 + +# Blocks are allowed +csharp_prefer_braces = true:silent +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = true + +# IDE0060: Remove unused parameter +dotnet_diagnostic.IDE0060.severity = none + +[src/{Analyzers,CodeStyle,Features,Workspaces,EditorFeatures,VisualStudio}/**/*.{cs,vb}] + +# Use collection expression for array +dotnet_diagnostic.IDE0300.severity = warning + +# Avoid "this." and "Me." if not necessary +dotnet_diagnostic.IDE0003.severity = warning +dotnet_diagnostic.IDE0009.severity = warning + +# IDE0011: Add braces +csharp_prefer_braces = when_multiline:warning +# NOTE: We need the below severity entry for Add Braces due to https://github.com/dotnet/roslyn/issues/44201 +dotnet_diagnostic.IDE0011.severity = warning + +# IDE0040: Add accessibility modifiers +dotnet_diagnostic.IDE0040.severity = warning + +# IDE0052: Remove unread private member +dotnet_diagnostic.IDE0052.severity = warning + +# IDE0059: Unnecessary assignment to a value +dotnet_diagnostic.IDE0059.severity = warning + +# CA1012: Abstract types should not have public constructors +dotnet_diagnostic.CA1012.severity = warning + +# CA1822: Make member static +dotnet_diagnostic.CA1822.severity = warning + +# Prefer "var" everywhere +dotnet_diagnostic.IDE0007.severity = warning +csharp_style_var_for_built_in_types = true:warning +csharp_style_var_when_type_is_apparent = true:warning +csharp_style_var_elsewhere = true:warning + +# csharp_style_allow_embedded_statements_on_same_line_experimental +dotnet_diagnostic.IDE2001.severity = warning + +# csharp_style_allow_blank_lines_between_consecutive_braces_experimental +dotnet_diagnostic.IDE2002.severity = warning + +# csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental +dotnet_diagnostic.IDE2004.severity = warning + +# csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental +dotnet_diagnostic.IDE2005.severity = warning + +# csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental +dotnet_diagnostic.IDE2006.severity = warning + +[src/{VisualStudio}/**/*.{cs,vb}] +# CA1822: Make member static +# There is a risk of accidentally breaking an internal API that partners rely on though IVT. +dotnet_code_quality.CA1822.api_surface = private diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3a65aeb --- /dev/null +++ b/.gitattributes @@ -0,0 +1,70 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text eol=lf +*.cs text eol=lf +*.csproj text eol=lf +*.props text eol=lf +*.json text eol=lf +*.targets text eol=lf + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +*.sln text eol=crlf +#*.csproj text eol=crlf +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +*.jpg binary +*.png binary +*.gif binary +*.ico binary +*.zip binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0b8f8c6 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,93 @@ +name: .NET Core Test and Publish + +on: + push: + branches: [master] + pull_request: + +env: + DOTNET_VERSION: 9.0.x + +jobs: + + Format: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: 'true' + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Check Format (*.cs) + run: dotnet format --verify-no-changes --verbosity diagnostic + + Test: + needs: [Format] + timeout-minutes: 15 + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Test + run: | + dotnet restore + dotnet build --no-restore + #dotnet test --no-build + + PublishPackage: + if: github.ref == 'refs/heads/master' && startsWith(github.repository, 'neo-project/') + needs: [Test] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Set Version + run: git rev-list --count HEAD | xargs printf 'CI%05d' | xargs -I{} echo 'VERSION_SUFFIX={}' >> $GITHUB_ENV + + - name : Pack (Everything) + run: | + dotnet pack \ + --configuration Release \ + --output ./out \ + --version-suffix ${{ env.VERSION_SUFFIX }} + + - name: Publish to Github Packages + working-directory: ./out + run: | + dotnet nuget push * \ + --source https://nuget.pkg.github.com/neo-project/index.json \ + --api-key "${{ secrets.GITHUB_TOKEN }}" \ + --disable-buffering \ + --no-service-endpoint + + - name: Publish to myGet + working-directory: ./out + run: | + dotnet nuget push * \ + --source https://www.myget.org/F/neo/api/v3/index.json \ + --api-key "${{ secrets.MYGET_TOKEN }}" \ + --disable-buffering \ + --no-service-endpoint diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml new file mode 100644 index 0000000..01404b0 --- /dev/null +++ b/.github/workflows/nuget.yml @@ -0,0 +1,47 @@ +name: Release (nuget) + +# Trigger the workflow on a release event when a new release is published +on: + release: + types: [published] + +# Define environment variables +env: + DOTNET_VERSION: 9.0.x + CONFIGURATION: Release + +jobs: + nuget-release: + runs-on: ubuntu-latest + steps: + # Step to set the application version from the release tag + - name: Set Application Version (Environment Variable) + run: | + APP_VERSION=$(echo '${{ github.event.release.tag_name }}' | cut -d 'v' -f 2) + echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV + + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: 'true' + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Pack NuGet Packages + run: | + dotnet pack ./neo.sln \ + --configuration Release \ + --output ./pkgs \ + --verbosity normal \ + -p:VersionPrefix=${{ env.APP_VERSION }} + + - name: Publish to NuGet.org + run: | + dotnet nuget push ./pkgs/*.nupkg \ + --source https://api.nuget.org/v3/index.json \ + --api-key ${{ secrets.NUGET_TOKEN }} \ + --skip-duplicate diff --git a/.github/workflows/pkgs-delete.yml b/.github/workflows/pkgs-delete.yml new file mode 100644 index 0000000..ed61076 --- /dev/null +++ b/.github/workflows/pkgs-delete.yml @@ -0,0 +1,27 @@ +name: Package Cleanup + +on: + schedule: + - cron: '0 0 * * *' # Run every day at 24:00 + +jobs: + + delete-git-nuget-pkgs: + name: Delete Old Nuget Packages + strategy: + matrix: + pkgs: + - "Neo.FileStorage.API" + + runs-on: ubuntu-latest + + steps: + - name: Delete ${{ matrix.pkgs }} Package + uses: actions/delete-package-versions@v4 + continue-on-error: true + with: + package-name: ${{ matrix.pkgs }} + package-type: nuget + min-versions-to-keep: 3 + delete-only-pre-release-versions: "true" + token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 8493892..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: .NET - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 9.0.x - - name: Pull dependency - run: git submodule update --init - - name: Restore dependencies - run: dotnet restore - - name: Build - run: dotnet build --no-restore - # - name: Test - # run: dotnet test --filter 'FullyQualifiedName!~Neo.FileStorage.API.UnitTests.FSClient.UT_Client&FullyQualifiedName!~Neo.FileStorage.API.UnitTests.UT_ControlClient' --no-build --verbosity normal diff --git a/.gitignore b/.gitignore index a183254..16342ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,264 @@ -.vs -.vscode -.idea -bin -obj +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. -vendor/* -!vendor/.gitkeep +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates -publish -tests/Neo.FileStorage.API.UnitTests/Netmap/TestData/ +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +*.[Cc]ache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +PublishProfiles +/.vscode +launchSettings.json +/coverages +**/.DS_Store + +# Benchmarks +**/BenchmarkDotNet.Artifacts/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5fd0592 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,82 @@ + +# Contributing to NEO +Neo is an open-source project and it depends on its contributors and constant community feedback to implement the features required for a smart economy. You are more than welcome to join us in the development of Neo. + +Read this document to understand how issues are organized and how you can start contributing. + +*This document covers this repository only and does not include community repositories or repositories managed by NGD Shanghai and NGD Seattle.* + +### Questions and Support +The issue list is reserved exclusively for bug reports and features discussions. If you have questions or need support, please visit us in our [Discord](https://discord.io/neo) server. + +### dApp Development +This document does not relate to dApp development. If you are looking to build a dApp using Neo, please [start here](https://neo.org/dev). + +### Contributing to open source projects +If you are new to open-source development, please [read here](https://opensource.guide/how-to-contribute/#opening-a-pull-request) how to submit your code. + +## Developer Guidance +We try to have as few rules as possible, just enough to keep the project organized: + + +1. **Discuss before coding**. Proposals must be discussed before being implemented. +Avoid implementing issues with the discussion tag. +2. **Tests during code review**. We expect reviewers to test the issue before approving or requesting changes. + +3. **Wait for at least 2 reviews before merging**. Changes can be merged after 2 approvals, for Neo 3.x branch, and 3 approvals for Neo 2.x branch. + +3. **Give time to other developers review an issue**. Even if the code has been approved, you should leave at least 24 hours for others to review it before merging the code. + +4. **Create unit tests**. It is important that the developer includes basic unit tests so reviewers can test it. + +5. **Task assignment**. If a developer wants to work in a specific issue, he may ask the team to assign it to himself. The proposer of an issue has priority in task assignment. + + +### Issues for beginners +If you are looking to start contributing to NEO, we suggest you start working on issues with ![](./.github/images/cosmetic.png) or ![](./.github/images/house-keeping.png) tags since they usually do not depend on extensive NEO platform knowledge. + +### Tags for Issues States + +![Discussion](./.github/images/discussion.png) Whenever someone posts a new feature request, the tag discussion is added. This means that there is no consensus if the feature should be implemented or not. Avoid creating PR to solve issues in this state since it may be completely discarded. + +![Design](./.github/images/solution-design.png) When a feature request is accepted by the team, but there is no consensus about the implementation, the issue is tagged with design. We recommend the team to agree in the solution design before anyone attempts to implement it, using text or UML. It is not recommended, but developers can also present their solution using code. +Note that PRs for issues in this state may also be discarded if the team disagree with the proposed solution. + +![Ready-to-implement](./.github/images/ready-to-implement.png) Once the team has agreed on feature and the proposed solution, the issue is tagged with ready-to-implement. When implementing it, please follow the solution accepted by the team. + +### Tags for Issue Types + +![Cosmetic](./.github/images/cosmetic.png) Issues with the cosmetic tag are usually changes in code or documentation that improve user experience without affecting current functionality. These issues are recommended for beginners because they require little to no knowledge about Neo platform. + +![Enhancement](./.github/images/enhancement.png) Enhancements are platform changes that may affect performance, usability or add new features to existing modules. It is recommended that developers have previous knowledge in the platform to work in these improvements, specially in more complicated modules like the compiler, ledger and consensus. + +![Feature](./.github/images/new-feature.png) New features may include large changes in the code base. Some are complex, but some are not. So, a few issues with new-feature may be recommended for starters, specially those related to the rpc and the sdk module. + +![Migration](./.github/images/migration.png) Issues related to the migration from Neo 2 to Neo 3 are tagged with migration. These issues are usually the most complicated ones since they require a deep knowledge in both versions. + +### Tags for Project Modules +These tags do not necessarily represent each module at code level. Modules consensus and compiler are not recommended for beginners. + +![Compiler](./.github/images/compiler.png) Issues that are related or influence the behavior of our C# compiler. Note that the compiler itself is hosted in the [neo-devpack-dotnet](https://github.com/neo-project/neo-devpack-dotnet) repository. + +![Consensus](./.github/images/consensus.png) Changes to consensus are usually harder to make and test. Avoid implementing issues in this module that are not yet decided. + +![Ledger](./.github/images/ledger.png) The ledger is our 'database', any changes in the way we store information or the data-structures have this tag. + +![House-keeping](./.github/images/house-keeping.png) 'Small' enhancements that need to be done in order to keep the project organised and ensure overall quality. These changes may be applied in any place in code, as long as they are small or do not alter current behavior. + +![Network-policy](./.github/images/network-policy.png) Identify issues that affect the network-policy like fees, access list or other related issues. Voting may also be related to the network policy module. + +![P2P](./.github/images/p2p.png) This module includes peer-to-peer message exchange and network optimisations, at TCP or UDP level (not HTTP). + +![RPC](./.github/images/rpc.png) All HTTP communication is handled by the RPC module. This module usually provides support methods since the main communication protocol takes place at the p2p module. + +![VM](./.github/images/vm.png) New features that affect the Neo Virtual Machine or the Interop layer. + +![SDK](./.github/images/sdk.png) Neo provides an SDK to help developers to interact with the blockchain. Changes in this module must not impact other parts of the software. + +![Wallet](./.github/images/wallet.png) Wallets are used to track funds and interact with the blockchain. Note that this module depends on a full node implementation (data stored on local disk). + + + + diff --git a/LICENSE b/LICENSE index 99f8e00..20efd1b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2020 +Copyright (c) 2015 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/NuGet.Config b/NuGet.Config index 5b86428..53fc635 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -1,8 +1,9 @@ - - - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/README.md b/README.md index 7a0f33c..8a48ce8 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,154 @@ -# NeoFS API CSharp +

+ + neo-logo + +

-[docs](./docs) +

CSharp implementation of the neo blockchain protocol.

-[nuget package](https://www.nuget.org/packages/NeoFS.API/) +

+ A modern distributed network for the Smart Economy. +
+ Documentation » +
+
+ Neo + · + Neo Modules + · + Neo DevPack +

+

+ + + +   + + + +   + + + +   + + + +   + + + +   + + + +   + + + +   + + + + +   + + + +

+

+ + Current neo version. + + + Coverage Status + + + License. + +

-### Requirements -- DotNet SDK (v5.0.0+) -- protobuf / protoc (3.11.4+) +

+ + Open in GitHub Codespaces. + +

-### Regenerate NeoFS Proto files and documentation -``` -# DotNet Restore -$ dotnet restore -# Regenerate doc files -$ make docgen -``` +## Table of Contents +1. [Overview](#overview) +2. [Project structure](#project-structure) +3. [Related projects](#related-projects) +4. [Opening a new issue](#opening-a-new-issue) +5. [Bounty program](#bounty-program) +6. [License](#license) -## License +## Overview +This repository is a csharp implementation of the [neo](https://neo.org) blockchain. It is jointly maintained by the neo core developers and neo global development community. +Visit the [tutorials](https://docs.neo.org) to get started. + + +## Project structure +An overview of the project folders can be seen below. + +|Folder|Content| +|---|---| +|[/src/neo/Cryptography/](https://github.com/neo-project/neo/tree/master/src/Neo/Cryptography)|General cryptography implementation, including ECC.| +|[/src/neo/IO/](https://github.com/neo-project/neo/tree/master/src/Neo/IO)|Data structures used for caching and collection interaction.| +|[/src/neo/Ledger/](https://github.com/neo-project/neo/tree/master/src/Neo/Ledger)|Classes responsible for the state control, including the `MemoryPool` and `Blockchain`.| +|[/src/neo/Network/](https://github.com/neo-project/neo/tree/master/src/Neo/Network)|Peer-to-peer protocol implementation.| +|[/src/neo/Persistence/](https://github.com/neo-project/neo/tree/master/src/Neo/Persistence)|Classes used to allow other classes to access application state.| +|[/src/neo/Plugins/](https://github.com/neo-project/neo/tree/master/src/Neo/Plugins)|Interfaces used to extend Neo, including the storage interface.| +|[/src/neo/SmartContract/](https://github.com/neo-project/neo/tree/master/src/Neo/SmartContract)|Native contracts, `ApplicationEngine`, `InteropService` and other smart-contract related classes.| +|[/src/neo/VM/](https://github.com/neo-project/neo/tree/master/src/Neo/VM)|Helper methods used to interact with the VM.| +|[/src/neo/Wallets/](https://github.com/neo-project/neo/tree/master/src/Neo/Wallets)|Wallet and account implementation.| +|[/src/Neo.CLI/](https://github.com/neo-project/neo/tree/master/src/Neo.CLI)| `neo-cli` console application for running a _FULL_ node.| +|[/src/Neo.Extensions/](https://github.com/neo-project/neo/tree/master/src/Neo.Extensions)| Extensions to expand the existing functionality.| +|[/src/Neo.Json/](https://github.com/neo-project/neo/tree/master/src/Neo.Json)| Neo's JSON specification.| +|[/src/Neo.VM/](https://github.com/neo-project/neo/tree/master/src/Neo.VM)|Neo virtual machine.| +|[/src/plugins/](https://github.com/neo-project/neo/tree/master/src/Plugins)| Include `ApplicationLogs`, `LevelDBStore`, `RpcServer`, `OracleService`, `DBFTPlugin` and more.| +|[/tests/](https://github.com/neo-project/neo/tree/master/tests)|All unit tests.| + +## Related projects +Code references are provided for all platform building blocks. That includes the base library, the VM, a command line application and the compiler. + +* [neo:](https://github.com/neo-project/neo/) Included libraries are Neo, Neo-CLI, Neo-GUI, Neo-VM, test and plugin modules. +* [neo-express:](https://github.com/neo-project/neo-express/) A private net optimized for development scenarios. +* [neo-devpack-dotnet:](https://github.com/neo-project/neo-devpack-dotnet/) These are the official tools used to convert a C# smart-contract into a *neo executable file*. +* [neo-proposals:](https://github.com/neo-project/proposals) NEO Enhancement Proposals (NEPs) describe standards for the NEO platform, including core protocol specifications, client APIs, and contract standards. +* [neo-non-native-contracts:](https://github.com/neo-project/non-native-contracts) Includes non-native contracts that live on the blockchain, included but not limited to NeoNameService. -This project is licensed under the MIT License - -see the [LICENSE](LICENSE) file for details +## Opening a new issue +Please feel free to create new issues to suggest features or ask questions. + +- [Feature request](https://github.com/neo-project/neo/issues/new?assignees=&labels=discussion&template=feature-or-enhancement-request.md&title=) +- [Bug report](https://github.com/neo-project/neo/issues/new?assignees=&labels=&template=bug_report.md&title=) +- [Questions](https://github.com/neo-project/neo/issues/new?assignees=&labels=question&template=questions.md&title=) + +If you found a security issue, please refer to our [security policy](https://github.com/neo-project/neo/security/policy). + +## Bounty program +You can be rewarded by finding security issues. Please refer to our [bounty program page](https://neo.org/bounty) for more information. + +## License +The NEO project is licensed under the [MIT license](LICENSE). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..24894d5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +The purpose of NEO vulnerability bounty program is to be proactive about blockchain security by providing a channel for security researchers to report potential security vulnerabilities identified related to our underlying infrastructure. + +First, it is recommended to read the following page https://neo.org/dev/bounty, if you find a security vulnerability in NEO, please report it as indicated on that page. + +Please withhold public disclosure until the security team has addressed the vulnerability and it has been solved. + +We appreciate your efforts to responsibly disclose your findings, and we will make every effort to acknowledge your contributions. + +The security team will acknowledge your email within 5 business days. You will receive a more detailed response within 10 business days. + +When in doubt, please do send us a report. diff --git a/SpellingExclusions.dic b/SpellingExclusions.dic new file mode 100644 index 0000000..e69de29 diff --git a/global.json b/global.json new file mode 100644 index 0000000..13ac5fc --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "9.0.102", + "rollForward": "latestFeature", + "allowPrerelease": false + } +} diff --git a/src/Neo.FileStorage.API/Neo.FileStorage.API.csproj b/src/Neo.FileStorage.API/Neo.FileStorage.API.csproj index 73c7a8e..37fd682 100644 --- a/src/Neo.FileStorage.API/Neo.FileStorage.API.csproj +++ b/src/Neo.FileStorage.API/Neo.FileStorage.API.csproj @@ -1,23 +1,29 @@ - + - 2020-2021 The Neo Project - Neo.FileStorage.API - 3.5.0 + net9.0 + 2015-2025 The Neo Project + NeoFS API for CSharp + latest The Neo Project - net9.0 - NeoFS.API + true + $(MSBuildProjectName) + neo.png NEO;NeoFS - https://github.com/neo-ngd/neofs-api-csharp + https://github.com/neo-project/neofs-api-csharp MIT + README.md git - https://github.com/neo-ngd/neofs-api-csharp.git - Neo.FileStorage.API - false - false + https://github.com/neo-project/neofs-api-csharp.git + true + snupkg The Neo Project - NeoFS API for CSharp - $(DefineConstants);GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + true + 3.7.5 + true + 4 + latest + ../../bin/$(PackageId) @@ -56,6 +62,7 @@ + diff --git a/src/Neo.FileStorage.API/NeoFS.API.0.3.5.nupkg b/src/Neo.FileStorage.API/NeoFS.API.0.3.5.nupkg deleted file mode 100644 index ff58ac59e04e414b1b6effd9db4279082326f7da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253869 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
    H84^u-o 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 SB4EL<2(Z0AZGo!|@xK5NXW>o& diff --git a/tests/Neo.FileStorage.API.UnitTests/Neo.FileStorage.API.UnitTests.csproj b/tests/Neo.FileStorage.API.UnitTests/Neo.FileStorage.API.UnitTests.csproj index a59ad87..874c9d4 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Neo.FileStorage.API.UnitTests.csproj +++ b/tests/Neo.FileStorage.API.UnitTests/Neo.FileStorage.API.UnitTests.csproj @@ -1,25 +1,25 @@ - - - - net9.0 - true - Exe - $(DefineConstants);GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE - - - - - - - - - - - - - PreserveNewest - PreserveNewest - json_tests/%(FileName)%(Extension) - - - + + + + net9.0 + true + Exe + $(DefineConstants);GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + + + + + + + + + + + + + PreserveNewest + PreserveNewest + json_tests/%(FileName)%(Extension) + + + diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs index b923319..dfd9ea5 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs @@ -257,7 +257,7 @@ public void TestGetPlacementVectors() Assert.AreEqual(4, result[1].Count); foreach (var ni in result[1]) { - var value = ni.Attributes["Continent"]; + var value = ni.Attributes["Continent"]; Assert.IsTrue(value == "NA" || value == "SA"); } From 8288f16b835c6e8a20fce70c70c588573f7dd75c Mon Sep 17 00:00:00 2001 From: Christopher Schuchardt Date: Thu, 20 Feb 2025 05:10:02 -0500 Subject: [PATCH 2/2] Fixes --- src/Neo.FileStorage.API/EnumJsonConverter.cs | 13 ++++- .../accounting/Extension.Message.cs | 13 ++++- .../acl/Extantion.BasicAcl.cs | 11 ++++ .../acl/Extension.EACLRecord.Filter.cs | 10 ++++ src/Neo.FileStorage.API/client/CallOptions.cs | 15 ++++- .../client/Client.Accounting.cs | 21 +++++-- .../client/Client.Container.cs | 23 ++++++-- .../client/Client.Netmap.cs | 23 ++++++-- .../client/Client.Object.cs | 23 ++++++-- .../client/Client.Option.cs | 11 ++++ .../client/Client.Reputation.cs | 19 +++++-- .../client/Client.Session.cs | 17 +++++- src/Neo.FileStorage.API/client/Client.cs | 11 ++++ .../client/ContainerWithSignature.cs | 11 ++++ .../client/EAclWithSignature.cs | 11 ++++ .../client/IClientStream.cs | 13 ++++- src/Neo.FileStorage.API/client/Interfaces.cs | 19 +++++-- .../client/ObjectReader.cs | 13 ++++- src/Neo.FileStorage.API/client/PutStream.cs | 15 ++++- .../container/Extension.Container.cs | 13 ++++- .../container/Extension.Message.cs | 11 ++++ .../control/ControlClient.cs | 13 ++++- .../control/Extension.Messages.cs | 11 ++++ src/Neo.FileStorage.API/control/Helper.cs | 11 ++++ .../control/IControlMessage.cs | 11 ++++ .../cryptography/Base58.cs | 13 +++-- .../cryptography/Helper.cs | 17 +++++- src/Neo.FileStorage.API/cryptography/Key.cs | 17 +++++- .../cryptography/Murmur3_128.cs | 11 ++++ src/Neo.FileStorage.API/cryptography/Sign.cs | 15 ++++- .../cryptography/Tz/GF127.cs | 15 ++++- .../cryptography/Tz/Helper.cs | 15 ++++- .../cryptography/Tz/SL2.cs | 13 ++++- .../cryptography/Tz/TzHash.cs | 27 ++++++--- src/Neo.FileStorage.API/cryptography/UUID.cs | 13 ++++- src/Neo.FileStorage.API/helper.cs | 11 ++++ .../netmap/Aggregator/Agg/MaxAgg.cs | 11 +++- .../netmap/Aggregator/Agg/MeanAgg.cs | 11 +++- .../netmap/Aggregator/Agg/MeanIQRAgg.cs | 13 ++++- .../netmap/Aggregator/Agg/MeanSumAgg.cs | 15 ++++- .../netmap/Aggregator/Agg/MinAgg.cs | 11 +++- .../netmap/Aggregator/IAggregator.cs | 10 ++++ .../netmap/Context.Filter.cs | 11 ++++ .../netmap/Context.Select.cs | 13 ++++- src/Neo.FileStorage.API/netmap/Context.cs | 15 ++++- .../netmap/Extension.Filter.cs | 11 +++- .../netmap/Extension.Message.cs | 13 ++++- .../netmap/Extension.NodeInfo.Attribute.cs | 11 +++- .../netmap/Extension.NodeInfo.cs | 13 ++++- .../netmap/Extension.PlacementPolicy.cs | 10 ++++ .../netmap/Extension.Replica.cs | 11 ++++ .../netmap/Extension.Selector.cs | 11 ++++ src/Neo.FileStorage.API/netmap/Helper.cs | 15 ++++- src/Neo.FileStorage.API/netmap/NetMap.cs | 13 ++++- src/Neo.FileStorage.API/netmap/Node.cs | 14 ++++- .../netmap/Normalizer/INormalizer.cs | 11 +++- .../netmap/Normalizer/Norm/ConstNorm.cs | 11 +++- .../netmap/Normalizer/Norm/MaxNorm.cs | 11 +++- .../netmap/Normalizer/Norm/ReverseMinNorm.cs | 11 +++- .../netmap/Normalizer/Norm/SigmoidNorm.cs | 11 +++- .../object/Extension.Header.cs | 11 +++- .../object/Extension.Message.cs | 11 ++++ .../object/Extension.Object.cs | 19 +++++-- .../object/Extension.ObjectType.cs | 11 ++++ .../object/Extension.SearchRequest.Filter.cs | 10 ++++ .../object/ObjectException.cs | 11 ++++ .../object/SearchFilters.cs | 13 ++++- src/Neo.FileStorage.API/object/SplitID.cs | 13 ++++- src/Neo.FileStorage.API/policy/Encode.cs | 11 ++++ src/Neo.FileStorage.API/policy/Grammer.cs | 55 +++++++++++-------- src/Neo.FileStorage.API/policy/Helper.cs | 15 ++++- .../refs/Extension.Address.cs | 11 ++++ .../refs/Extension.Checksum.cs | 11 ++++ .../refs/Extension.ContainerID.cs | 13 ++++- .../refs/Extension.ObjectID.cs | 11 ++++ .../refs/Extension.OwnerID.cs | 13 ++++- .../refs/Extension.SubnetID.cs | 10 ++++ .../refs/Extension.Version.cs | 11 ++++ .../reputation/Extension.GlobalTrust.cs | 12 +++- .../reputation/Extension.Message.cs | 11 ++++ .../reputation/Extension.PeerID.cs | 13 ++++- .../Extension.ContainerSessionContext.cs | 11 ++++ .../session/Extension.Message.cs | 13 ++++- .../session/Extension.MetaHeader.cs | 11 ++++ .../session/Extension.ObjectSessionContext.cs | 11 ++++ .../session/Extension.SessionToken.cs | 13 ++++- .../session/Extension.VerificationHeader.cs | 11 ++++ .../session/Extension.XHeader.cs | 13 ++++- .../session/IMetaHeader.cs | 11 ++++ src/Neo.FileStorage.API/session/IRequest.cs | 11 ++++ src/Neo.FileStorage.API/session/IResponse.cs | 11 ++++ .../session/IVerifiableMessage.cs | 11 ++++ .../session/IVerificationHeader.cs | 11 ++++ .../status/Extension.Status.cs | 13 ++++- src/Neo.FileStorage.API/status/Helper.cs | 13 ++++- .../Acl/UT_BasicACL.cs | 16 +++++- .../Acl/UT_Filter.cs | 11 ++++ .../Acl/UT_Operation.cs | 12 +++- .../Acl/UT_Record.cs | 11 ++++ .../Acl/UT_Target.cs | 11 ++++ .../Client/UT_Client.Accounting.cs | 11 ++++ .../Client/UT_Client.Container.cs | 18 ++++-- .../Client/UT_Client.HandleException.cs | 11 ++++ .../Client/UT_Client.Netmap.cs | 13 ++++- .../Client/UT_Client.Object.cs | 12 ++++ .../Client/UT_Client.Session.cs | 15 ++++- .../Client/UT_Client.cs | 15 ++++- .../Container/UT_Container.cs | 15 ++++- .../Control/UT_ControlClient.cs | 11 ++++ .../Cryptography/TzHash/UT_GF127.cs | 16 ++++-- .../Cryptography/TzHash/UT_Helper.cs | 11 ++++ .../Cryptography/TzHash/UT_SL2.cs | 13 ++++- .../Cryptography/TzHash/UT_TzHash.cs | 14 ++++- .../Cryptography/UT_Key.cs | 12 +++- .../Cryptography/UT_Sign.cs | 19 +++++-- .../Netmap/Helper.cs | 13 ++++- .../Netmap/TestNetmap.cs | 20 +++++-- .../Netmap/UT_Clause.cs | 14 ++++- .../Netmap/UT_Filter.cs | 11 ++++ .../Netmap/UT_Helper.cs | 13 ++++- .../Netmap/UT_NetMap.cs | 17 +++++- .../Netmap/UT_NetmapState.cs | 14 ++++- .../Netmap/UT_NodeInfo.cs | 11 ++++ .../Netmap/UT_Policy.cs | 13 ++++- .../Netmap/UT_Selector.cs | 11 ++++ .../Object/UT_ObjectType.cs | 20 +++++-- .../Object/UT_Search.cs | 13 ++++- .../Object/UT_SplitID.cs | 13 ++++- .../Policy/UT_Encode.cs | 11 ++++ .../Policy/UT_Policy.cs | 11 ++++ .../Refs/UT_Refs.cs | 17 +++++- .../Status/UT_Status.cs | 11 ++++ tests/Neo.FileStorage.API.UnitTests/helper.cs | 11 ++++ 133 files changed, 1592 insertions(+), 195 deletions(-) diff --git a/src/Neo.FileStorage.API/EnumJsonConverter.cs b/src/Neo.FileStorage.API/EnumJsonConverter.cs index 3b2c854..3b457d6 100644 --- a/src/Neo.FileStorage.API/EnumJsonConverter.cs +++ b/src/Neo.FileStorage.API/EnumJsonConverter.cs @@ -1,8 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// EnumJsonConverter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + #nullable enable +using Newtonsoft.Json; using System; using System.Linq; -using Newtonsoft.Json; namespace Neo.FileStorage.API { diff --git a/src/Neo.FileStorage.API/accounting/Extension.Message.cs b/src/Neo.FileStorage.API/accounting/Extension.Message.cs index 69d7605..5c09fb0 100644 --- a/src/Neo.FileStorage.API/accounting/Extension.Message.cs +++ b/src/Neo.FileStorage.API/accounting/Extension.Message.cs @@ -1,4 +1,15 @@ -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Google.Protobuf; using Neo.FileStorage.API.Session; namespace Neo.FileStorage.API.Accounting diff --git a/src/Neo.FileStorage.API/acl/Extantion.BasicAcl.cs b/src/Neo.FileStorage.API/acl/Extantion.BasicAcl.cs index 72cc7f9..888b5ee 100644 --- a/src/Neo.FileStorage.API/acl/Extantion.BasicAcl.cs +++ b/src/Neo.FileStorage.API/acl/Extantion.BasicAcl.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extantion.BasicAcl.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System.Collections.Generic; namespace Neo.FileStorage.API.Acl diff --git a/src/Neo.FileStorage.API/acl/Extension.EACLRecord.Filter.cs b/src/Neo.FileStorage.API/acl/Extension.EACLRecord.Filter.cs index 157262e..a41d6d6 100644 --- a/src/Neo.FileStorage.API/acl/Extension.EACLRecord.Filter.cs +++ b/src/Neo.FileStorage.API/acl/Extension.EACLRecord.Filter.cs @@ -1,3 +1,13 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.EACLRecord.Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Acl { diff --git a/src/Neo.FileStorage.API/client/CallOptions.cs b/src/Neo.FileStorage.API/client/CallOptions.cs index 7923a66..673f3d3 100644 --- a/src/Neo.FileStorage.API/client/CallOptions.cs +++ b/src/Neo.FileStorage.API/client/CallOptions.cs @@ -1,8 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// CallOptions.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Acl; +using Neo.FileStorage.API.Session; using System; using System.Collections.Generic; using System.Security.Cryptography; -using Neo.FileStorage.API.Acl; -using Neo.FileStorage.API.Session; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/client/Client.Accounting.cs b/src/Neo.FileStorage.API/client/Client.Accounting.cs index 4ae3a93..f2e3323 100644 --- a/src/Neo.FileStorage.API/client/Client.Accounting.cs +++ b/src/Neo.FileStorage.API/client/Client.Accounting.cs @@ -1,9 +1,20 @@ -using System; -using System.Threading; -using System.Threading.Tasks; +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Accounting.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Accounting; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Refs; +using System; +using System.Threading; +using System.Threading.Tasks; namespace Neo.FileStorage.API.Client { @@ -19,9 +30,9 @@ public sealed partial class Client Body = new BalanceRequest.Types.Body { OwnerId = owner, - } + }, + MetaHeader = opts.GetRequestMetaHeader() }; - req.MetaHeader = opts.GetRequestMetaHeader(); opts.Key.Sign(req); return await GetBalance(req, opts.Deadline, context); } diff --git a/src/Neo.FileStorage.API/client/Client.Container.cs b/src/Neo.FileStorage.API/client/Client.Container.cs index c1ce57e..1966cee 100644 --- a/src/Neo.FileStorage.API/client/Client.Container.cs +++ b/src/Neo.FileStorage.API/client/Client.Container.cs @@ -1,15 +1,26 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Threading; -using System.Threading.Tasks; +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Container.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Acl; using Neo.FileStorage.API.Container; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Session; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Threading; +using System.Threading.Tasks; using UsedSpaceAnnouncement = Neo.FileStorage.API.Container.AnnounceUsedSpaceRequest.Types.Body.Types.Announcement; namespace Neo.FileStorage.API.Client diff --git a/src/Neo.FileStorage.API/client/Client.Netmap.cs b/src/Neo.FileStorage.API/client/Client.Netmap.cs index e089db7..618addf 100644 --- a/src/Neo.FileStorage.API/client/Client.Netmap.cs +++ b/src/Neo.FileStorage.API/client/Client.Netmap.cs @@ -1,8 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Netmap.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Cryptography; +using Neo.FileStorage.API.Netmap; using System; using System.Threading; using System.Threading.Tasks; -using Neo.FileStorage.API.Cryptography; -using Neo.FileStorage.API.Netmap; namespace Neo.FileStorage.API.Client { @@ -14,9 +25,9 @@ public async Task LocalNodeInfo(CallOptions options = null, Cancellati CheckOptions(opts); var req = new LocalNodeInfoRequest { - Body = new LocalNodeInfoRequest.Types.Body { } + Body = new LocalNodeInfoRequest.Types.Body { }, + MetaHeader = opts.GetRequestMetaHeader() }; - req.MetaHeader = opts.GetRequestMetaHeader(); opts.Key.Sign(req); return await LocalNodeInfo(req, opts.Deadline, context); @@ -77,9 +88,9 @@ public async Task NetworkInfo(CallOptions options = null, Cancellat CheckOptions(opts); var req = new NetworkInfoRequest { - Body = new NetworkInfoRequest.Types.Body { } + Body = new NetworkInfoRequest.Types.Body { }, + MetaHeader = opts.GetRequestMetaHeader() }; - req.MetaHeader = opts.GetRequestMetaHeader(); opts.Key.Sign(req); var resp = await NetmapClient.NetworkInfoAsync(req, cancellationToken: context); ProcessResponse(resp); diff --git a/src/Neo.FileStorage.API/client/Client.Object.cs b/src/Neo.FileStorage.API/client/Client.Object.cs index 1c626a3..c76f3cf 100644 --- a/src/Neo.FileStorage.API/client/Client.Object.cs +++ b/src/Neo.FileStorage.API/client/Client.Object.cs @@ -1,3 +1,20 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Object.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Google.Protobuf; +using Grpc.Core; +using Neo.FileStorage.API.Cryptography; +using Neo.FileStorage.API.Object; +using Neo.FileStorage.API.Refs; +using Neo.FileStorage.API.Session; using System; using System.Collections.Generic; using System.IO; @@ -5,12 +22,6 @@ using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; -using Google.Protobuf; -using Grpc.Core; -using Neo.FileStorage.API.Cryptography; -using Neo.FileStorage.API.Object; -using Neo.FileStorage.API.Refs; -using Neo.FileStorage.API.Session; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/client/Client.Option.cs b/src/Neo.FileStorage.API/client/Client.Option.cs index a1346cd..718c41d 100644 --- a/src/Neo.FileStorage.API/client/Client.Option.cs +++ b/src/Neo.FileStorage.API/client/Client.Option.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Option.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Session; using System; diff --git a/src/Neo.FileStorage.API/client/Client.Reputation.cs b/src/Neo.FileStorage.API/client/Client.Reputation.cs index 58fd62d..9781ca4 100644 --- a/src/Neo.FileStorage.API/client/Client.Reputation.cs +++ b/src/Neo.FileStorage.API/client/Client.Reputation.cs @@ -1,9 +1,20 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Reputation.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Cryptography; +using Neo.FileStorage.API.Reputation; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Neo.FileStorage.API.Cryptography; -using Neo.FileStorage.API.Reputation; namespace Neo.FileStorage.API.Client { @@ -46,9 +57,9 @@ public async Task AnnounceIntermediateTrust(ulong epoch, uint iter, PeerToPeerTr Epoch = epoch, Iteration = iter, Trust = trust, - } + }, + MetaHeader = opts.GetRequestMetaHeader() }; - req.MetaHeader = opts.GetRequestMetaHeader(); opts.Key.Sign(req); var resp = await ReputationClient.AnnounceIntermediateResultAsync(req, cancellationToken: context); if (!resp.Verify()) diff --git a/src/Neo.FileStorage.API/client/Client.Session.cs b/src/Neo.FileStorage.API/client/Client.Session.cs index bece273..513ee2e 100644 --- a/src/Neo.FileStorage.API/client/Client.Session.cs +++ b/src/Neo.FileStorage.API/client/Client.Session.cs @@ -1,9 +1,20 @@ -using System; -using System.Threading; -using System.Threading.Tasks; +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.Session.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Acl; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Session; +using System; +using System.Threading; +using System.Threading.Tasks; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/client/Client.cs b/src/Neo.FileStorage.API/client/Client.cs index 7710b65..fdc4e66 100644 --- a/src/Neo.FileStorage.API/client/Client.cs +++ b/src/Neo.FileStorage.API/client/Client.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Client.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Grpc.Core; using Grpc.Net.Client; using Neo.FileStorage.API.Accounting; diff --git a/src/Neo.FileStorage.API/client/ContainerWithSignature.cs b/src/Neo.FileStorage.API/client/ContainerWithSignature.cs index 41a2742..28f0bfa 100644 --- a/src/Neo.FileStorage.API/client/ContainerWithSignature.cs +++ b/src/Neo.FileStorage.API/client/ContainerWithSignature.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// ContainerWithSignature.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Session; diff --git a/src/Neo.FileStorage.API/client/EAclWithSignature.cs b/src/Neo.FileStorage.API/client/EAclWithSignature.cs index dbca652..5533ce5 100644 --- a/src/Neo.FileStorage.API/client/EAclWithSignature.cs +++ b/src/Neo.FileStorage.API/client/EAclWithSignature.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// EAclWithSignature.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Acl; using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Session; diff --git a/src/Neo.FileStorage.API/client/IClientStream.cs b/src/Neo.FileStorage.API/client/IClientStream.cs index df675d8..96062c0 100644 --- a/src/Neo.FileStorage.API/client/IClientStream.cs +++ b/src/Neo.FileStorage.API/client/IClientStream.cs @@ -1,6 +1,17 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IClientStream.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Session; using System; using System.Threading.Tasks; -using Neo.FileStorage.API.Session; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/client/Interfaces.cs b/src/Neo.FileStorage.API/client/Interfaces.cs index 7a8990d..e57ea15 100644 --- a/src/Neo.FileStorage.API/client/Interfaces.cs +++ b/src/Neo.FileStorage.API/client/Interfaces.cs @@ -1,7 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; +// Copyright (C) 2015-2025 The Neo Project. +// +// Interfaces.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Accounting; using Neo.FileStorage.API.Acl; using Neo.FileStorage.API.Container; @@ -10,6 +17,10 @@ using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Reputation; using Neo.FileStorage.API.Session; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; using UsedSpaceAnnouncement = Neo.FileStorage.API.Container.AnnounceUsedSpaceRequest.Types.Body.Types.Announcement; namespace Neo.FileStorage.API.Client diff --git a/src/Neo.FileStorage.API/client/ObjectReader.cs b/src/Neo.FileStorage.API/client/ObjectReader.cs index d2eba8f..1d0f3ab 100644 --- a/src/Neo.FileStorage.API/client/ObjectReader.cs +++ b/src/Neo.FileStorage.API/client/ObjectReader.cs @@ -1,6 +1,17 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// ObjectReader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Grpc.Core; using Neo.FileStorage.API.Object; +using System; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/client/PutStream.cs b/src/Neo.FileStorage.API/client/PutStream.cs index 87c922a..fe55d7d 100644 --- a/src/Neo.FileStorage.API/client/PutStream.cs +++ b/src/Neo.FileStorage.API/client/PutStream.cs @@ -1,9 +1,20 @@ -using System; -using System.Threading.Tasks; +// Copyright (C) 2015-2025 The Neo Project. +// +// PutStream.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Grpc.Core; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Object; using Neo.FileStorage.API.Session; +using System; +using System.Threading.Tasks; namespace Neo.FileStorage.API.Client { diff --git a/src/Neo.FileStorage.API/container/Extension.Container.cs b/src/Neo.FileStorage.API/container/Extension.Container.cs index 15c5d9c..777d89e 100644 --- a/src/Neo.FileStorage.API/container/Extension.Container.cs +++ b/src/Neo.FileStorage.API/container/Extension.Container.cs @@ -1,6 +1,17 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Container.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; -using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Cryptography; +using Neo.FileStorage.API.Refs; using System; namespace Neo.FileStorage.API.Container diff --git a/src/Neo.FileStorage.API/container/Extension.Message.cs b/src/Neo.FileStorage.API/container/Extension.Message.cs index 26d8bdc..2a51d16 100644 --- a/src/Neo.FileStorage.API/container/Extension.Message.cs +++ b/src/Neo.FileStorage.API/container/Extension.Message.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Session; diff --git a/src/Neo.FileStorage.API/control/ControlClient.cs b/src/Neo.FileStorage.API/control/ControlClient.cs index 33018ab..e94baf9 100644 --- a/src/Neo.FileStorage.API/control/ControlClient.cs +++ b/src/Neo.FileStorage.API/control/ControlClient.cs @@ -1,9 +1,18 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// ControlClient.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Grpc.Core; using Grpc.Net.Client; using System; -using System.Collections.Generic; -using System.Linq; using System.Security.Cryptography; namespace Neo.FileStorage.API.Control diff --git a/src/Neo.FileStorage.API/control/Extension.Messages.cs b/src/Neo.FileStorage.API/control/Extension.Messages.cs index 89b48f9..a6fbb00 100644 --- a/src/Neo.FileStorage.API/control/Extension.Messages.cs +++ b/src/Neo.FileStorage.API/control/Extension.Messages.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Messages.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; namespace Neo.FileStorage.API.Control diff --git a/src/Neo.FileStorage.API/control/Helper.cs b/src/Neo.FileStorage.API/control/Helper.cs index 3bd6140..d10e457 100644 --- a/src/Neo.FileStorage.API/control/Helper.cs +++ b/src/Neo.FileStorage.API/control/Helper.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; using System.Security.Cryptography; diff --git a/src/Neo.FileStorage.API/control/IControlMessage.cs b/src/Neo.FileStorage.API/control/IControlMessage.cs index 4be2813..ed452ec 100644 --- a/src/Neo.FileStorage.API/control/IControlMessage.cs +++ b/src/Neo.FileStorage.API/control/IControlMessage.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IControlMessage.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; namespace Neo.FileStorage.API.Control diff --git a/src/Neo.FileStorage.API/cryptography/Base58.cs b/src/Neo.FileStorage.API/cryptography/Base58.cs index 354688f..af41c42 100644 --- a/src/Neo.FileStorage.API/cryptography/Base58.cs +++ b/src/Neo.FileStorage.API/cryptography/Base58.cs @@ -1,10 +1,11 @@ -// Copyright (C) 2015-2021 The Neo Project. -// -// The neo is free software distributed under the MIT software license, -// see the accompanying file LICENSE in the main directory of the -// project or http://www.opensource.org/licenses/mit-license.php +// Copyright (C) 2015-2025 The Neo Project. +// +// Base58.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php // for more details. -// +// // Redistribution and use in source and binary forms with or without // modifications are permitted. diff --git a/src/Neo.FileStorage.API/cryptography/Helper.cs b/src/Neo.FileStorage.API/cryptography/Helper.cs index bbbf233..24b4fa1 100644 --- a/src/Neo.FileStorage.API/cryptography/Helper.cs +++ b/src/Neo.FileStorage.API/cryptography/Helper.cs @@ -1,10 +1,21 @@ -using System; -using System.Buffers.Binary; -using System.Security.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography.Tz; using Neo.FileStorage.API.Refs; using Org.BouncyCastle.Crypto.Digests; +using System; +using System.Buffers.Binary; +using System.Security.Cryptography; namespace Neo.FileStorage.API.Cryptography; diff --git a/src/Neo.FileStorage.API/cryptography/Key.cs b/src/Neo.FileStorage.API/cryptography/Key.cs index b8cc1e7..7feac4c 100644 --- a/src/Neo.FileStorage.API/cryptography/Key.cs +++ b/src/Neo.FileStorage.API/cryptography/Key.cs @@ -1,11 +1,22 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Key.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Refs; +using Org.BouncyCastle.Asn1.Sec; +using System; using System.Buffers.Binary; using System.Linq; using System.Numerics; using System.Security.Cryptography; using System.Text; -using Neo.FileStorage.API.Refs; -using Org.BouncyCastle.Asn1.Sec; using static Neo.FileStorage.API.Helper; namespace Neo.FileStorage.API.Cryptography; diff --git a/src/Neo.FileStorage.API/cryptography/Murmur3_128.cs b/src/Neo.FileStorage.API/cryptography/Murmur3_128.cs index 745e1aa..a5180a4 100644 --- a/src/Neo.FileStorage.API/cryptography/Murmur3_128.cs +++ b/src/Neo.FileStorage.API/cryptography/Murmur3_128.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Murmur3_128.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; using System.Buffers.Binary; using System.Security.Cryptography; diff --git a/src/Neo.FileStorage.API/cryptography/Sign.cs b/src/Neo.FileStorage.API/cryptography/Sign.cs index 86f0f18..e05f1a3 100644 --- a/src/Neo.FileStorage.API/cryptography/Sign.cs +++ b/src/Neo.FileStorage.API/cryptography/Sign.cs @@ -1,5 +1,14 @@ -using System; -using System.Security.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// Sign.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Session; @@ -8,6 +17,8 @@ using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Signers; using Org.BouncyCastle.Math; +using System; +using System.Security.Cryptography; namespace Neo.FileStorage.API.Cryptography { diff --git a/src/Neo.FileStorage.API/cryptography/Tz/GF127.cs b/src/Neo.FileStorage.API/cryptography/Tz/GF127.cs index 2a40371..50fa075 100644 --- a/src/Neo.FileStorage.API/cryptography/Tz/GF127.cs +++ b/src/Neo.FileStorage.API/cryptography/Tz/GF127.cs @@ -1,4 +1,15 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// GF127.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using System; using System.Security.Cryptography; namespace Neo.FileStorage.API.Cryptography.Tz @@ -242,7 +253,7 @@ public byte[] ToByteArray() // ToString() returns hex-encoded representation, starting with MSB. public override string ToString() { - return this.ToByteArray().ToHexString(); + return ToByteArray().ToHexString(); } } diff --git a/src/Neo.FileStorage.API/cryptography/Tz/Helper.cs b/src/Neo.FileStorage.API/cryptography/Tz/Helper.cs index 7a1070f..d561db6 100644 --- a/src/Neo.FileStorage.API/cryptography/Tz/Helper.cs +++ b/src/Neo.FileStorage.API/cryptography/Tz/Helper.cs @@ -1,7 +1,16 @@ -using System; -using System.Globalization; +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using System; using System.Security.Cryptography; -using System.Text; namespace Neo.FileStorage.API.Cryptography.Tz { diff --git a/src/Neo.FileStorage.API/cryptography/Tz/SL2.cs b/src/Neo.FileStorage.API/cryptography/Tz/SL2.cs index 5bdc310..9df93ca 100644 --- a/src/Neo.FileStorage.API/cryptography/Tz/SL2.cs +++ b/src/Neo.FileStorage.API/cryptography/Tz/SL2.cs @@ -1,4 +1,15 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// SL2.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using System; using System.Linq; namespace Neo.FileStorage.API.Cryptography.Tz diff --git a/src/Neo.FileStorage.API/cryptography/Tz/TzHash.cs b/src/Neo.FileStorage.API/cryptography/Tz/TzHash.cs index a95de33..0b9a093 100644 --- a/src/Neo.FileStorage.API/cryptography/Tz/TzHash.cs +++ b/src/Neo.FileStorage.API/cryptography/Tz/TzHash.cs @@ -1,4 +1,15 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// TzHash.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using System; using System.Collections.Generic; using System.Security; using System.Security.Cryptography; @@ -18,17 +29,17 @@ public TzHash() public override void Initialize() { - this.x = new GF127[4]; - this.Reset(); + x = new GF127[4]; + Reset(); HashValue = null; } public void Reset() { - this.x[0] = new GF127(1, 0); - this.x[1] = new GF127(0, 0); - this.x[2] = new GF127(0, 0); - this.x[3] = new GF127(1, 0); + x[0] = new GF127(1, 0); + x[1] = new GF127(0, 0); + x[2] = new GF127(0, 0); + x[3] = new GF127(1, 0); } public byte[] ToByteArray() @@ -36,7 +47,7 @@ public byte[] ToByteArray() var buff = new byte[HashSize]; for (int i = 0; i < 4; i++) { - Array.Copy(this.x[i].ToByteArray(), 0, buff, i * 16, 16); + Array.Copy(x[i].ToByteArray(), 0, buff, i * 16, 16); } return buff; } diff --git a/src/Neo.FileStorage.API/cryptography/UUID.cs b/src/Neo.FileStorage.API/cryptography/UUID.cs index 235d2b5..d3b797a 100644 --- a/src/Neo.FileStorage.API/cryptography/UUID.cs +++ b/src/Neo.FileStorage.API/cryptography/UUID.cs @@ -1,4 +1,15 @@ -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// UUID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Google.Protobuf; using System; namespace Neo.FileStorage.API.Cryptography diff --git a/src/Neo.FileStorage.API/helper.cs b/src/Neo.FileStorage.API/helper.cs index 33db866..74d96e7 100644 --- a/src/Neo.FileStorage.API/helper.cs +++ b/src/Neo.FileStorage.API/helper.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; using System.Globalization; using System.Runtime.CompilerServices; diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MaxAgg.cs b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MaxAgg.cs index 89c6e94..d562341 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MaxAgg.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MaxAgg.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// MaxAgg.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Aggregator { diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanAgg.cs b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanAgg.cs index 1c3fc7a..48ee7b4 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanAgg.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanAgg.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// MeanAgg.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Aggregator { diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanIQRAgg.cs b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanIQRAgg.cs index 3a6d8b0..bb24617 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanIQRAgg.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanIQRAgg.cs @@ -1,6 +1,15 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// MeanIQRAgg.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System.Collections.Generic; -using System.Linq; namespace Neo.FileStorage.API.Netmap.Aggregator { diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanSumAgg.cs b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanSumAgg.cs index 611f1e9..15bd512 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanSumAgg.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MeanSumAgg.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// MeanSumAgg.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Aggregator { @@ -9,8 +18,8 @@ public class MeanSumAgg : IAggregator public void Add(double n) { - this.sum += n; - this.count++; + sum += n; + count++; } public double Compute() diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MinAgg.cs b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MinAgg.cs index 89fe5d5..d924d71 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MinAgg.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/Agg/MinAgg.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// MinAgg.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Aggregator { diff --git a/src/Neo.FileStorage.API/netmap/Aggregator/IAggregator.cs b/src/Neo.FileStorage.API/netmap/Aggregator/IAggregator.cs index cdc4c4f..c339afc 100644 --- a/src/Neo.FileStorage.API/netmap/Aggregator/IAggregator.cs +++ b/src/Neo.FileStorage.API/netmap/Aggregator/IAggregator.cs @@ -1,3 +1,13 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IAggregator.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Aggregator { diff --git a/src/Neo.FileStorage.API/netmap/Context.Filter.cs b/src/Neo.FileStorage.API/netmap/Context.Filter.cs index ed36d38..e3a2f62 100644 --- a/src/Neo.FileStorage.API/netmap/Context.Filter.cs +++ b/src/Neo.FileStorage.API/netmap/Context.Filter.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Context.Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; namespace Neo.FileStorage.API.Netmap diff --git a/src/Neo.FileStorage.API/netmap/Context.Select.cs b/src/Neo.FileStorage.API/netmap/Context.Select.cs index 501d4c1..b9e14e3 100644 --- a/src/Neo.FileStorage.API/netmap/Context.Select.cs +++ b/src/Neo.FileStorage.API/netmap/Context.Select.cs @@ -1,7 +1,18 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Context.Select.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Refs; using System; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Refs; namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Context.cs b/src/Neo.FileStorage.API/netmap/Context.cs index c2088de..9ee23f2 100644 --- a/src/Neo.FileStorage.API/netmap/Context.cs +++ b/src/Neo.FileStorage.API/netmap/Context.cs @@ -1,7 +1,18 @@ -using System; -using System.Collections.Generic; +// Copyright (C) 2015-2025 The Neo Project. +// +// Context.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Netmap.Aggregator; +using System; +using System.Collections.Generic; namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Extension.Filter.cs b/src/Neo.FileStorage.API/netmap/Extension.Filter.cs index 1616067..925b0ec 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.Filter.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.Filter.cs @@ -1,4 +1,13 @@ -using System.Collections.Generic; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Extension.Message.cs b/src/Neo.FileStorage.API/netmap/Extension.Message.cs index d901887..11c1a40 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.Message.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.Message.cs @@ -1,4 +1,15 @@ -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Google.Protobuf; using Neo.FileStorage.API.Session; namespace Neo.FileStorage.API.Netmap diff --git a/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.Attribute.cs b/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.Attribute.cs index 578456d..0cbdbfc 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.Attribute.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.Attribute.cs @@ -1,4 +1,13 @@ -using System.Linq; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.NodeInfo.Attribute.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.cs b/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.cs index 0353ffa..f86b826 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.NodeInfo.cs @@ -1,7 +1,16 @@ -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.NodeInfo.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Refs; using System.Collections.Generic; -using System.Linq; using static Neo.FileStorage.API.Netmap.NodeInfo.Types; namespace Neo.FileStorage.API.Netmap diff --git a/src/Neo.FileStorage.API/netmap/Extension.PlacementPolicy.cs b/src/Neo.FileStorage.API/netmap/Extension.PlacementPolicy.cs index 0d3b0e2..74096fa 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.PlacementPolicy.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.PlacementPolicy.cs @@ -1,3 +1,13 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.PlacementPolicy.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. using System.Collections.Generic; diff --git a/src/Neo.FileStorage.API/netmap/Extension.Replica.cs b/src/Neo.FileStorage.API/netmap/Extension.Replica.cs index 70c8878..7ffa269 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.Replica.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.Replica.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Replica.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Netmap { public partial class Replica diff --git a/src/Neo.FileStorage.API/netmap/Extension.Selector.cs b/src/Neo.FileStorage.API/netmap/Extension.Selector.cs index e6e710d..e1d2eca 100644 --- a/src/Neo.FileStorage.API/netmap/Extension.Selector.cs +++ b/src/Neo.FileStorage.API/netmap/Extension.Selector.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Selector.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Netmap { public partial class Selector diff --git a/src/Neo.FileStorage.API/netmap/Helper.cs b/src/Neo.FileStorage.API/netmap/Helper.cs index 65c9d94..722793b 100644 --- a/src/Neo.FileStorage.API/netmap/Helper.cs +++ b/src/Neo.FileStorage.API/netmap/Helper.cs @@ -1,8 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Netmap.Aggregator; +using Neo.FileStorage.API.Netmap.Normalize; using System; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Netmap.Aggregator; -using Neo.FileStorage.API.Netmap.Normalize; namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/NetMap.cs b/src/Neo.FileStorage.API/netmap/NetMap.cs index fcc3e9b..e5a9c5a 100644 --- a/src/Neo.FileStorage.API/netmap/NetMap.cs +++ b/src/Neo.FileStorage.API/netmap/NetMap.cs @@ -1,7 +1,18 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// NetMap.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Cryptography; using System; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Cryptography; namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Node.cs b/src/Neo.FileStorage.API/netmap/Node.cs index 36cadab..1f37abe 100644 --- a/src/Neo.FileStorage.API/netmap/Node.cs +++ b/src/Neo.FileStorage.API/netmap/Node.cs @@ -1,8 +1,18 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Node.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Cryptography; using System; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Cryptography; -using Newtonsoft.Json.Linq; namespace Neo.FileStorage.API.Netmap { diff --git a/src/Neo.FileStorage.API/netmap/Normalizer/INormalizer.cs b/src/Neo.FileStorage.API/netmap/Normalizer/INormalizer.cs index 8801a71..d44bf96 100644 --- a/src/Neo.FileStorage.API/netmap/Normalizer/INormalizer.cs +++ b/src/Neo.FileStorage.API/netmap/Normalizer/INormalizer.cs @@ -1,4 +1,13 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// INormalizer.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Normalize { diff --git a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ConstNorm.cs b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ConstNorm.cs index 647379b..e117991 100644 --- a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ConstNorm.cs +++ b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ConstNorm.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// ConstNorm.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Normalize { diff --git a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/MaxNorm.cs b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/MaxNorm.cs index 96befe6..0868e12 100644 --- a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/MaxNorm.cs +++ b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/MaxNorm.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// MaxNorm.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Normalize { diff --git a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ReverseMinNorm.cs b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ReverseMinNorm.cs index b971159..a7f4087 100644 --- a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ReverseMinNorm.cs +++ b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/ReverseMinNorm.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// ReverseMinNorm.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Normalize { diff --git a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/SigmoidNorm.cs b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/SigmoidNorm.cs index 2544d3c..93d5197 100644 --- a/src/Neo.FileStorage.API/netmap/Normalizer/Norm/SigmoidNorm.cs +++ b/src/Neo.FileStorage.API/netmap/Normalizer/Norm/SigmoidNorm.cs @@ -1,4 +1,13 @@ - +// Copyright (C) 2015-2025 The Neo Project. +// +// SigmoidNorm.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Netmap.Normalize { diff --git a/src/Neo.FileStorage.API/object/Extension.Header.cs b/src/Neo.FileStorage.API/object/Extension.Header.cs index 36aca9e..fba872e 100644 --- a/src/Neo.FileStorage.API/object/Extension.Header.cs +++ b/src/Neo.FileStorage.API/object/Extension.Header.cs @@ -1,4 +1,13 @@ -using System.Linq; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Header.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Object { diff --git a/src/Neo.FileStorage.API/object/Extension.Message.cs b/src/Neo.FileStorage.API/object/Extension.Message.cs index 0bc4fc8..e2c2524 100644 --- a/src/Neo.FileStorage.API/object/Extension.Message.cs +++ b/src/Neo.FileStorage.API/object/Extension.Message.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Session; diff --git a/src/Neo.FileStorage.API/object/Extension.Object.cs b/src/Neo.FileStorage.API/object/Extension.Object.cs index 24c3a92..5de1f6c 100644 --- a/src/Neo.FileStorage.API/object/Extension.Object.cs +++ b/src/Neo.FileStorage.API/object/Extension.Object.cs @@ -1,11 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Object.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Refs; using Neo.FileStorage.API.Session; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; using Version = Neo.FileStorage.API.Refs.Version; namespace Neo.FileStorage.API.Object; diff --git a/src/Neo.FileStorage.API/object/Extension.ObjectType.cs b/src/Neo.FileStorage.API/object/Extension.ObjectType.cs index 0e945e5..9cadb97 100644 --- a/src/Neo.FileStorage.API/object/Extension.ObjectType.cs +++ b/src/Neo.FileStorage.API/object/Extension.ObjectType.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.ObjectType.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; using System.Collections.Generic; diff --git a/src/Neo.FileStorage.API/object/Extension.SearchRequest.Filter.cs b/src/Neo.FileStorage.API/object/Extension.SearchRequest.Filter.cs index ffc31a6..b0b4281 100644 --- a/src/Neo.FileStorage.API/object/Extension.SearchRequest.Filter.cs +++ b/src/Neo.FileStorage.API/object/Extension.SearchRequest.Filter.cs @@ -1,3 +1,13 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.SearchRequest.Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Object { diff --git a/src/Neo.FileStorage.API/object/ObjectException.cs b/src/Neo.FileStorage.API/object/ObjectException.cs index 3e562c8..c594321 100644 --- a/src/Neo.FileStorage.API/object/ObjectException.cs +++ b/src/Neo.FileStorage.API/object/ObjectException.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// ObjectException.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + #nullable enable using System; diff --git a/src/Neo.FileStorage.API/object/SearchFilters.cs b/src/Neo.FileStorage.API/object/SearchFilters.cs index 4b8c7f4..6e94eee 100644 --- a/src/Neo.FileStorage.API/object/SearchFilters.cs +++ b/src/Neo.FileStorage.API/object/SearchFilters.cs @@ -1,6 +1,17 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// SearchFilters.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Refs; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Refs; using static Neo.FileStorage.API.Object.SearchRequest.Types.Body.Types; namespace Neo.FileStorage.API.Object diff --git a/src/Neo.FileStorage.API/object/SplitID.cs b/src/Neo.FileStorage.API/object/SplitID.cs index 61e1aa7..01e7129 100644 --- a/src/Neo.FileStorage.API/object/SplitID.cs +++ b/src/Neo.FileStorage.API/object/SplitID.cs @@ -1,5 +1,16 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// SplitID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; +using System; namespace Neo.FileStorage.API.Object { diff --git a/src/Neo.FileStorage.API/policy/Encode.cs b/src/Neo.FileStorage.API/policy/Encode.cs index 8f29fa0..9bec2ee 100644 --- a/src/Neo.FileStorage.API/policy/Encode.cs +++ b/src/Neo.FileStorage.API/policy/Encode.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Encode.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Netmap; using System.Collections.Generic; using System.Text; diff --git a/src/Neo.FileStorage.API/policy/Grammer.cs b/src/Neo.FileStorage.API/policy/Grammer.cs index 3f38ffd..7bd13de 100644 --- a/src/Neo.FileStorage.API/policy/Grammer.cs +++ b/src/Neo.FileStorage.API/policy/Grammer.cs @@ -1,5 +1,16 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Grammer.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Sprache; +using System; namespace Neo.FileStorage.API.Policy { @@ -12,10 +23,10 @@ public class Query public Query(ReplicaStmt[] replicas, uint cbf, SelectorStmt[] selectors, FilterStmt[] filters) { - this.Replicas = replicas; - this.CBF = cbf; - this.Selectors = selectors; - this.Filters = filters; + Replicas = replicas; + CBF = cbf; + Selectors = selectors; + Filters = filters; } public static Query Parse(string s) @@ -31,8 +42,8 @@ public class ReplicaStmt public ReplicaStmt(uint count, string selector) { - this.Count = count; - this.Selector = selector; + Count = count; + Selector = selector; } } @@ -45,10 +56,10 @@ public class SelectorStmt public SelectorStmt(uint count, string[] bucket, string filter, string name) { - this.Count = count; - this.Bucket = bucket; - this.Filter = filter; - this.Name = name; + Count = count; + Bucket = bucket; + Filter = filter; + Name = name; } } @@ -59,8 +70,8 @@ public class FilterStmt public FilterStmt(OrChain value, string name) { - this.Value = value; - this.Name = name; + Value = value; + Name = name; } } @@ -70,7 +81,7 @@ public class OrChain public OrChain(AndChain[] clauses) { - this.Clauses = clauses; + Clauses = clauses; } } @@ -80,7 +91,7 @@ public class AndChain public AndChain(FilterOrExpr[] clauses) { - this.Clauses = clauses; + Clauses = clauses; } } @@ -93,16 +104,16 @@ public FilterOrExpr(string value) { if (value.StartsWith("@")) { - this.Reference = value[1..]; - this.Expr = null; + Reference = value[1..]; + Expr = null; } else { var values = value.Split(Helper.ExprSpliter); if (values.Length != 3) throw new ArgumentException($"invalid filter expression {value}"); - this.Expr = new SimpleExpr(values[0], values[1], values[2]); - this.Reference = ""; + Expr = new SimpleExpr(values[0], values[1], values[2]); + Reference = ""; } } } @@ -115,9 +126,9 @@ public class SimpleExpr public SimpleExpr(string key, string op, string value) { - this.Key = key; - this.Op = op; - this.Value = value; + Key = key; + Op = op; + Value = value; } } } diff --git a/src/Neo.FileStorage.API/policy/Helper.cs b/src/Neo.FileStorage.API/policy/Helper.cs index 0639efe..9fc52dc 100644 --- a/src/Neo.FileStorage.API/policy/Helper.cs +++ b/src/Neo.FileStorage.API/policy/Helper.cs @@ -1,8 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Neo.FileStorage.API.Netmap; +using Sprache; using System; using System.Collections.Generic; using System.Linq; -using Neo.FileStorage.API.Netmap; -using Sprache; namespace Neo.FileStorage.API.Policy { diff --git a/src/Neo.FileStorage.API/refs/Extension.Address.cs b/src/Neo.FileStorage.API/refs/Extension.Address.cs index 8fb3c37..65145d8 100644 --- a/src/Neo.FileStorage.API/refs/Extension.Address.cs +++ b/src/Neo.FileStorage.API/refs/Extension.Address.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Address.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; namespace Neo.FileStorage.API.Refs diff --git a/src/Neo.FileStorage.API/refs/Extension.Checksum.cs b/src/Neo.FileStorage.API/refs/Extension.Checksum.cs index dd95b47..a9dca04 100644 --- a/src/Neo.FileStorage.API/refs/Extension.Checksum.cs +++ b/src/Neo.FileStorage.API/refs/Extension.Checksum.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Checksum.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography.Tz; using System; diff --git a/src/Neo.FileStorage.API/refs/Extension.ContainerID.cs b/src/Neo.FileStorage.API/refs/Extension.ContainerID.cs index 87ebce5..bde401e 100644 --- a/src/Neo.FileStorage.API/refs/Extension.ContainerID.cs +++ b/src/Neo.FileStorage.API/refs/Extension.ContainerID.cs @@ -1,6 +1,17 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.ContainerID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; +using System; using static Neo.FileStorage.API.Cryptography.Helper; namespace Neo.FileStorage.API.Refs; diff --git a/src/Neo.FileStorage.API/refs/Extension.ObjectID.cs b/src/Neo.FileStorage.API/refs/Extension.ObjectID.cs index 0fe0583..e5d0620 100644 --- a/src/Neo.FileStorage.API/refs/Extension.ObjectID.cs +++ b/src/Neo.FileStorage.API/refs/Extension.ObjectID.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.ObjectID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; using static Neo.FileStorage.API.Cryptography.Helper; diff --git a/src/Neo.FileStorage.API/refs/Extension.OwnerID.cs b/src/Neo.FileStorage.API/refs/Extension.OwnerID.cs index 637c77f..41662e1 100644 --- a/src/Neo.FileStorage.API/refs/Extension.OwnerID.cs +++ b/src/Neo.FileStorage.API/refs/Extension.OwnerID.cs @@ -1,6 +1,17 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.OwnerID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; +using System; namespace Neo.FileStorage.API.Refs { diff --git a/src/Neo.FileStorage.API/refs/Extension.SubnetID.cs b/src/Neo.FileStorage.API/refs/Extension.SubnetID.cs index 92f7734..b97403d 100644 --- a/src/Neo.FileStorage.API/refs/Extension.SubnetID.cs +++ b/src/Neo.FileStorage.API/refs/Extension.SubnetID.cs @@ -1,3 +1,13 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.SubnetID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. namespace Neo.FileStorage.API.Refs { diff --git a/src/Neo.FileStorage.API/refs/Extension.Version.cs b/src/Neo.FileStorage.API/refs/Extension.Version.cs index aeb71c8..c26cc2f 100644 --- a/src/Neo.FileStorage.API/refs/Extension.Version.cs +++ b/src/Neo.FileStorage.API/refs/Extension.Version.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Version.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Refs { public partial class Version diff --git a/src/Neo.FileStorage.API/reputation/Extension.GlobalTrust.cs b/src/Neo.FileStorage.API/reputation/Extension.GlobalTrust.cs index 033d305..51af844 100644 --- a/src/Neo.FileStorage.API/reputation/Extension.GlobalTrust.cs +++ b/src/Neo.FileStorage.API/reputation/Extension.GlobalTrust.cs @@ -1,6 +1,16 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.GlobalTrust.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. -using System.Security.Cryptography; using Neo.FileStorage.API.Cryptography; +using System.Security.Cryptography; namespace Neo.FileStorage.API.Reputation { diff --git a/src/Neo.FileStorage.API/reputation/Extension.Message.cs b/src/Neo.FileStorage.API/reputation/Extension.Message.cs index 29ca3c1..4063481 100644 --- a/src/Neo.FileStorage.API/reputation/Extension.Message.cs +++ b/src/Neo.FileStorage.API/reputation/Extension.Message.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Session; diff --git a/src/Neo.FileStorage.API/reputation/Extension.PeerID.cs b/src/Neo.FileStorage.API/reputation/Extension.PeerID.cs index 4188172..96abec2 100644 --- a/src/Neo.FileStorage.API/reputation/Extension.PeerID.cs +++ b/src/Neo.FileStorage.API/reputation/Extension.PeerID.cs @@ -1,6 +1,17 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.PeerID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Cryptography; +using System; namespace Neo.FileStorage.API.Reputation { diff --git a/src/Neo.FileStorage.API/session/Extension.ContainerSessionContext.cs b/src/Neo.FileStorage.API/session/Extension.ContainerSessionContext.cs index d8210e3..7ac4382 100644 --- a/src/Neo.FileStorage.API/session/Extension.ContainerSessionContext.cs +++ b/src/Neo.FileStorage.API/session/Extension.ContainerSessionContext.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.ContainerSessionContext.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Session { public sealed partial class ContainerSessionContext diff --git a/src/Neo.FileStorage.API/session/Extension.Message.cs b/src/Neo.FileStorage.API/session/Extension.Message.cs index f5805be..e709e60 100644 --- a/src/Neo.FileStorage.API/session/Extension.Message.cs +++ b/src/Neo.FileStorage.API/session/Extension.Message.cs @@ -1,4 +1,15 @@ -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Message.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Google.Protobuf; namespace Neo.FileStorage.API.Session { diff --git a/src/Neo.FileStorage.API/session/Extension.MetaHeader.cs b/src/Neo.FileStorage.API/session/Extension.MetaHeader.cs index cf42624..5fb104a 100644 --- a/src/Neo.FileStorage.API/session/Extension.MetaHeader.cs +++ b/src/Neo.FileStorage.API/session/Extension.MetaHeader.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.MetaHeader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Refs; namespace Neo.FileStorage.API.Session diff --git a/src/Neo.FileStorage.API/session/Extension.ObjectSessionContext.cs b/src/Neo.FileStorage.API/session/Extension.ObjectSessionContext.cs index 0acf94d..d66d04e 100644 --- a/src/Neo.FileStorage.API/session/Extension.ObjectSessionContext.cs +++ b/src/Neo.FileStorage.API/session/Extension.ObjectSessionContext.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.ObjectSessionContext.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Session { public sealed partial class ObjectSessionContext diff --git a/src/Neo.FileStorage.API/session/Extension.SessionToken.cs b/src/Neo.FileStorage.API/session/Extension.SessionToken.cs index 8346564..3c61c9a 100644 --- a/src/Neo.FileStorage.API/session/Extension.SessionToken.cs +++ b/src/Neo.FileStorage.API/session/Extension.SessionToken.cs @@ -1,5 +1,16 @@ -using System.Security.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.SessionToken.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Cryptography; +using System.Security.Cryptography; namespace Neo.FileStorage.API.Session { diff --git a/src/Neo.FileStorage.API/session/Extension.VerificationHeader.cs b/src/Neo.FileStorage.API/session/Extension.VerificationHeader.cs index 6f9ddea..922975f 100644 --- a/src/Neo.FileStorage.API/session/Extension.VerificationHeader.cs +++ b/src/Neo.FileStorage.API/session/Extension.VerificationHeader.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.VerificationHeader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Session { public partial class RequestVerificationHeader : IVerificationHeader diff --git a/src/Neo.FileStorage.API/session/Extension.XHeader.cs b/src/Neo.FileStorage.API/session/Extension.XHeader.cs index cd3ccc4..aa36574 100644 --- a/src/Neo.FileStorage.API/session/Extension.XHeader.cs +++ b/src/Neo.FileStorage.API/session/Extension.XHeader.cs @@ -1,4 +1,15 @@ -namespace Neo.FileStorage.API.Session +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.XHeader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +namespace Neo.FileStorage.API.Session { public partial class XHeader { diff --git a/src/Neo.FileStorage.API/session/IMetaHeader.cs b/src/Neo.FileStorage.API/session/IMetaHeader.cs index 65238cd..7f9e9a8 100644 --- a/src/Neo.FileStorage.API/session/IMetaHeader.cs +++ b/src/Neo.FileStorage.API/session/IMetaHeader.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IMetaHeader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; namespace Neo.FileStorage.API.Session diff --git a/src/Neo.FileStorage.API/session/IRequest.cs b/src/Neo.FileStorage.API/session/IRequest.cs index 2d2afcd..105dc21 100644 --- a/src/Neo.FileStorage.API/session/IRequest.cs +++ b/src/Neo.FileStorage.API/session/IRequest.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IRequest.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Session { public interface IRequest : IVerificableMessage diff --git a/src/Neo.FileStorage.API/session/IResponse.cs b/src/Neo.FileStorage.API/session/IResponse.cs index 7da8b02..2b6aeda 100644 --- a/src/Neo.FileStorage.API/session/IResponse.cs +++ b/src/Neo.FileStorage.API/session/IResponse.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IResponse.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + namespace Neo.FileStorage.API.Session { public interface IResponse : IVerificableMessage diff --git a/src/Neo.FileStorage.API/session/IVerifiableMessage.cs b/src/Neo.FileStorage.API/session/IVerifiableMessage.cs index b349357..7c82836 100644 --- a/src/Neo.FileStorage.API/session/IVerifiableMessage.cs +++ b/src/Neo.FileStorage.API/session/IVerifiableMessage.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IVerifiableMessage.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; namespace Neo.FileStorage.API.Session diff --git a/src/Neo.FileStorage.API/session/IVerificationHeader.cs b/src/Neo.FileStorage.API/session/IVerificationHeader.cs index c1182e1..834782d 100644 --- a/src/Neo.FileStorage.API/session/IVerificationHeader.cs +++ b/src/Neo.FileStorage.API/session/IVerificationHeader.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// IVerificationHeader.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Neo.FileStorage.API.Refs; diff --git a/src/Neo.FileStorage.API/status/Extension.Status.cs b/src/Neo.FileStorage.API/status/Extension.Status.cs index 352fe3e..0c4d4f4 100644 --- a/src/Neo.FileStorage.API/status/Extension.Status.cs +++ b/src/Neo.FileStorage.API/status/Extension.Status.cs @@ -1,6 +1,17 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// Extension.Status.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Grpc.Core; using System; using System.Collections.Generic; -using Grpc.Core; namespace Neo.FileStorage.API.Status; diff --git a/src/Neo.FileStorage.API/status/Helper.cs b/src/Neo.FileStorage.API/status/Helper.cs index 83a920b..caa8c28 100644 --- a/src/Neo.FileStorage.API/status/Helper.cs +++ b/src/Neo.FileStorage.API/status/Helper.cs @@ -1,5 +1,16 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Session; +using System; namespace Neo.FileStorage.API.Status { diff --git a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_BasicACL.cs b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_BasicACL.cs index f6190da..bc2c566 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_BasicACL.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_BasicACL.cs @@ -1,9 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_BasicACL.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Neo.FileStorage.API.Acl; using System; using System.Collections.Generic; using System.Linq; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Neo.FileStorage.API.Acl; -using Neo.FileStorage.API.Object; namespace Neo.FileStorage.API.UnitTests.Acl { diff --git a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Filter.cs b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Filter.cs index 026982e..bbec684 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Filter.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Filter.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Acl; using static Neo.FileStorage.API.Acl.EACLRecord.Types; diff --git a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Operation.cs b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Operation.cs index f35ca95..9be849d 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Operation.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Operation.cs @@ -1,6 +1,16 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Operation.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Acl; -using static Neo.FileStorage.API.Acl.EACLRecord.Types; namespace Neo.FileStorage.API.UnitTests.Acl { diff --git a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Record.cs b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Record.cs index 28de633..e98d59f 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Record.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Record.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Record.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Acl; diff --git a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Target.cs b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Target.cs index eea35be..1d32822 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Target.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Acl/UT_Target.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Target.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Acl; using static Neo.FileStorage.API.Acl.EACLRecord.Types; diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Accounting.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Accounting.cs index 96826a4..31b8ca2 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Accounting.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Accounting.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.Accounting.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Refs; diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Container.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Container.cs index 783ea99..9350035 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Container.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Container.cs @@ -1,12 +1,22 @@ -using System; -using System.Linq; -using System.Threading; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.Container.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Acl; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Netmap; -using Neo.FileStorage.API.Refs; +using System; +using System.Linq; +using System.Threading; namespace Neo.FileStorage.API.UnitTests.FSClient { diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.HandleException.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.HandleException.cs index cd996c1..5407a77 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.HandleException.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.HandleException.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.HandleException.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Grpc.Core; using Grpc.Net.Client; using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Netmap.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Netmap.cs index 6c5f888..3bbfc4b 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Netmap.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Netmap.cs @@ -1,6 +1,17 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.Netmap.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Threading; -using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Neo.FileStorage.API.UnitTests.FSClient { diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Object.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Object.cs index f1a5eac..26aa680 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Object.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Object.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.Object.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Client; @@ -85,6 +96,7 @@ public void TestObjectPutStream() } [TestMethod] + [Obsolete] public void TestObjectPutStorageGroup() { List oids = new() { ObjectID.FromString("7Q7fPKESmRJ1VGHKcB2pB4JWVebsQzrJypwQiNLU1ekv"), ObjectID.FromString("HwfVt5i9ucjPUhRpHyxamnfTvhKtTUysCZWXcJ6YZsZ4") }; diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Session.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Session.cs index 1cceb64..7e5ca42 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Session.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.Session.cs @@ -1,7 +1,18 @@ -using System; -using System.Threading; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.Session.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; +using System; +using System.Threading; namespace Neo.FileStorage.API.UnitTests.FSClient { diff --git a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.cs b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.cs index 31635f0..75bc91a 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Client/UT_Client.cs @@ -1,11 +1,22 @@ -using System; -using System.Security.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Client.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Cryptography.Tz; using Neo.FileStorage.API.Object; using Neo.FileStorage.API.Refs; +using System; +using System.Security.Cryptography; namespace Neo.FileStorage.API.UnitTests.FSClient { diff --git a/tests/Neo.FileStorage.API.UnitTests/Container/UT_Container.cs b/tests/Neo.FileStorage.API.UnitTests/Container/UT_Container.cs index 9b67c84..95e5478 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Container/UT_Container.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Container/UT_Container.cs @@ -1,10 +1,19 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Container.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Neo.FileStorage.API.Container; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Netmap; -using Neo.FileStorage.API.Refs; +using System; namespace Neo.FileStorage.API.UnitTests.TestContainer { diff --git a/tests/Neo.FileStorage.API.UnitTests/Control/UT_ControlClient.cs b/tests/Neo.FileStorage.API.UnitTests/Control/UT_ControlClient.cs index 1bfa558..fb5b31f 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Control/UT_ControlClient.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Control/UT_ControlClient.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_ControlClient.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Control; diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_GF127.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_GF127.cs index f80e32d..bf45673 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_GF127.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_GF127.cs @@ -1,8 +1,16 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_GF127.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography.Tz; -using System; -using System.Collections.Generic; -using System.Text; namespace Neo.FileStorage.API.UnitTests.TestCryptography.Tz { diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_Helper.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_Helper.cs index c0eb0b4..1f488eb 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_Helper.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_Helper.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using static Neo.FileStorage.API.Cryptography.Tz.Helper; diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_SL2.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_SL2.cs index 7050823..a656f5d 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_SL2.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_SL2.cs @@ -1,4 +1,15 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_SL2.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography.Tz; namespace Neo.FileStorage.API.UnitTests.TestCryptography.Tz diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_TzHash.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_TzHash.cs index a6f033d..f9de114 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_TzHash.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/TzHash/UT_TzHash.cs @@ -1,5 +1,15 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Neo.FileStorage.API.Cryptography; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_TzHash.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography.Tz; using System; using System.Linq; diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Key.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Key.cs index 7d84240..86fdde6 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Key.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Key.cs @@ -1,4 +1,14 @@ -using System; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Key.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; diff --git a/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Sign.cs b/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Sign.cs index 3f94e4c..67de8ce 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Sign.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Cryptography/UT_Sign.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Sign.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Accounting; using Neo.FileStorage.API.Cryptography; @@ -34,12 +45,12 @@ public void TestSignRequest() { Value = 100 }, + }, + MetaHeader = new ResponseMetaHeader() + { + Ttl = 1 } }; - req.MetaHeader = new ResponseMetaHeader() - { - Ttl = 1 - }; key.Sign(req); Console.WriteLine(req); Assert.IsTrue(req.Verify()); diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/Helper.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/Helper.cs index d6a4c02..0e739bd 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/Helper.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/Helper.cs @@ -1,5 +1,16 @@ -using System.Collections.Generic; +// Copyright (C) 2015-2025 The Neo Project. +// +// Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Neo.FileStorage.API.Netmap; +using System.Collections.Generic; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/TestNetmap.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/TestNetmap.cs index f32aec5..63888ac 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/TestNetmap.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/TestNetmap.cs @@ -1,11 +1,21 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// TestNetmap.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Neo.FileStorage.API.Netmap; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using Google.Protobuf.WellKnownTypes; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Neo.FileStorage.API.Netmap; -using Newtonsoft.Json; namespace Neo.FileStorage.API.UnitTests.TestNetmap { @@ -13,7 +23,7 @@ namespace Neo.FileStorage.API.UnitTests.TestNetmap public class TestNetmap { private const string jsonDir = "./json_tests"; - private List tests = new(); + private readonly List tests = new(); private class Placement { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Clause.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Clause.cs index 0eb40a3..9b7c9b2 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Clause.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Clause.cs @@ -1,6 +1,16 @@ -using System; -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Clause.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Filter.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Filter.cs index f472f9a..0af4f97 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Filter.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Filter.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Filter.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; using System; diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Helper.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Helper.cs index e739cad..58abb9c 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Helper.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Helper.cs @@ -1,6 +1,17 @@ -using System.Collections.Generic; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; +using System.Collections.Generic; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetMap.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetMap.cs index 2d323cd..0a7ed2a 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetMap.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetMap.cs @@ -1,10 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Linq; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_NetMap.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; using Neo.FileStorage.API.Refs; using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetmapState.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetmapState.cs index 0baaec2..a23de84 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetmapState.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NetmapState.cs @@ -1,7 +1,17 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_NetmapState.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. -using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; +using System; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NodeInfo.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NodeInfo.cs index 77e929d..109a559 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NodeInfo.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_NodeInfo.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_NodeInfo.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; using Neo.FileStorage.API.Refs; diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Policy.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Policy.cs index 9c48f30..88d8ba6 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Policy.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Policy.cs @@ -1,6 +1,17 @@ -using System.Linq; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Policy.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; +using System.Linq; namespace Neo.FileStorage.API.UnitTests.TestNetmap { diff --git a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs index dfd9ea5..f7b371a 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Netmap/UT_Selector.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Selector.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; diff --git a/tests/Neo.FileStorage.API.UnitTests/Object/UT_ObjectType.cs b/tests/Neo.FileStorage.API.UnitTests/Object/UT_ObjectType.cs index 964d298..8390ea5 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Object/UT_ObjectType.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Object/UT_ObjectType.cs @@ -1,11 +1,19 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_ObjectType.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. - -using System; -using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Object; using Neo.FileStorage.API.Refs; +using System; namespace Neo.FileStorage.API.UnitTests.TestObject { @@ -28,8 +36,10 @@ public void TestParse() [TestMethod] public void TestJson() { - Header header = new(); - header.ContainerId = ContainerID.FromValue((new byte[] { 1, 2, 3 }).Sha256()); + Header header = new() + { + ContainerId = ContainerID.FromValue((new byte[] { 1, 2, 3 }).Sha256()) + }; Console.WriteLine(header.ToString()); } } diff --git a/tests/Neo.FileStorage.API.UnitTests/Object/UT_Search.cs b/tests/Neo.FileStorage.API.UnitTests/Object/UT_Search.cs index ab86ee7..8d4dc6b 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Object/UT_Search.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Object/UT_Search.cs @@ -1,5 +1,14 @@ -using System; -using Google.Protobuf; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Search.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Object; diff --git a/tests/Neo.FileStorage.API.UnitTests/Object/UT_SplitID.cs b/tests/Neo.FileStorage.API.UnitTests/Object/UT_SplitID.cs index 00b9164..c9b7fef 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Object/UT_SplitID.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Object/UT_SplitID.cs @@ -1,9 +1,18 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_SplitID.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. - -using System; using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Object; +using System; namespace Neo.FileStorage.API.UnitTests.TestObject { diff --git a/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Encode.cs b/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Encode.cs index 2c94de8..1df3c7d 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Encode.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Encode.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Encode.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Policy; using static Neo.FileStorage.API.Policy.Helper; diff --git a/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Policy.cs b/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Policy.cs index f9d533a..4b55869 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Policy.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Policy/UT_Policy.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Policy.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Netmap; using Sprache; diff --git a/tests/Neo.FileStorage.API.UnitTests/Refs/UT_Refs.cs b/tests/Neo.FileStorage.API.UnitTests/Refs/UT_Refs.cs index f04f005..0f59f70 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Refs/UT_Refs.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Refs/UT_Refs.cs @@ -1,10 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Linq; +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Refs.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Google.Protobuf; using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Cryptography; using Neo.FileStorage.API.Refs; +using System; +using System.Collections.Generic; +using System.Linq; namespace Neo.FileStorage.API.UnitTests.TestRefs { diff --git a/tests/Neo.FileStorage.API.UnitTests/Status/UT_Status.cs b/tests/Neo.FileStorage.API.UnitTests/Status/UT_Status.cs index cbc7d72..f5ff343 100644 --- a/tests/Neo.FileStorage.API.UnitTests/Status/UT_Status.cs +++ b/tests/Neo.FileStorage.API.UnitTests/Status/UT_Status.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// UT_Status.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using Microsoft.VisualStudio.TestTools.UnitTesting; using Neo.FileStorage.API.Status; diff --git a/tests/Neo.FileStorage.API.UnitTests/helper.cs b/tests/Neo.FileStorage.API.UnitTests/helper.cs index 038262a..3d62726 100644 --- a/tests/Neo.FileStorage.API.UnitTests/helper.cs +++ b/tests/Neo.FileStorage.API.UnitTests/helper.cs @@ -1,3 +1,14 @@ +// Copyright (C) 2015-2025 The Neo Project. +// +// helper.cs file belongs to the neo project and is free +// software distributed under the MIT software license, see the +// accompanying file LICENSE in the main directory of the +// repository or http://www.opensource.org/licenses/mit-license.php +// for more details. +// +// Redistribution and use in source and binary forms with or without +// modifications are permitted. + using System; using System.Globalization; using System.Runtime.CompilerServices;