diff --git a/.sonarqube/conf/0/FilesToAnalyze.txt b/.sonarqube/conf/0/FilesToAnalyze.txt deleted file mode 100644 index 84c89a1..0000000 --- a/.sonarqube/conf/0/FilesToAnalyze.txt +++ /dev/null @@ -1,35 +0,0 @@ -/workspaces/AS400API/Auth/AuthPolicies.cs -/workspaces/AS400API/Auth/DemoUser.cs -/workspaces/AS400API/Auth/DemoUserStore.cs -/workspaces/AS400API/Auth/LoginRequest.cs -/workspaces/AS400API/Auth/LoginResponse.cs -/workspaces/AS400API/Auth/PasswordHasher.cs -/workspaces/AS400API/Auth/Roles.cs -/workspaces/AS400API/Auth/TokenService.cs -/workspaces/AS400API/Configuration/JwtOptions.cs -/workspaces/AS400API/Configuration/OdbcOptions.cs -/workspaces/AS400API/Endpoints/As400Endpoints.cs -/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs -/workspaces/AS400API/Endpoints/AuthEndpoints.cs -/workspaces/AS400API/Endpoints/SystemEndpoints.cs -/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs -/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs -/workspaces/AS400API/Program.cs -/workspaces/AS400API/obj/Debug/net9.0/AS400API.GlobalUsings.g.cs -/workspaces/AS400API/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs -/workspaces/AS400API/obj/Debug/net9.0/AS400API.AssemblyInfo.cs -/workspaces/AS400API/obj/Debug/net9.0/AS400API.MvcApplicationPartsAssemblyInfo.cs -/workspaces/AS400API/appsettings.json -/workspaces/AS400API/.dockerignore -/workspaces/AS400API/docker-compose.yml -/workspaces/AS400API/docker/odbc/odbc.ini -/workspaces/AS400API/docker/odbc/odbcinst.ini -/workspaces/AS400API/Dockerfile -/workspaces/AS400API/drivers/ibm-iaccess-1.1.0.28-1.0.x86_64.rpm -/workspaces/AS400API/Logs/as400-api-20251001.log -/workspaces/AS400API/Logs/as400-api-20251002.log -/workspaces/AS400API/Logs/as400-api-20251003.log -/workspaces/AS400API/Logs/as400-api-20251004.log -/workspaces/AS400API/README.md -/workspaces/AS400API/scripts/run-sonar.sh -/workspaces/AS400API/scripts/test-databases.sh diff --git a/.sonarqube/conf/Sonar-cs-none.ruleset b/.sonarqube/conf/Sonar-cs-none.ruleset deleted file mode 100644 index c9e8431..0000000 --- a/.sonarqube/conf/Sonar-cs-none.ruleset +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.sonarqube/conf/Sonar-cs.ruleset b/.sonarqube/conf/Sonar-cs.ruleset deleted file mode 100644 index 92ad81f..0000000 --- a/.sonarqube/conf/Sonar-cs.ruleset +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.sonarqube/conf/Sonar-vbnet-none.ruleset b/.sonarqube/conf/Sonar-vbnet-none.ruleset deleted file mode 100644 index 2d27b76..0000000 --- a/.sonarqube/conf/Sonar-vbnet-none.ruleset +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.sonarqube/conf/Sonar-vbnet.ruleset b/.sonarqube/conf/Sonar-vbnet.ruleset deleted file mode 100644 index bf6aca3..0000000 --- a/.sonarqube/conf/Sonar-vbnet.ruleset +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.sonarqube/conf/SonarQubeAnalysisConfig.xml b/.sonarqube/conf/SonarQubeAnalysisConfig.xml deleted file mode 100644 index 9bbceae..0000000 --- a/.sonarqube/conf/SonarQubeAnalysisConfig.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - /workspaces/AS400API/.sonarqube/conf - /workspaces/AS400API/.sonarqube/out - /workspaces/AS400API/.sonarqube/bin - /workspaces/AS400API - false - true - true - false - http://host.docker.internal:9000 - 9.9.8.100196 - as400api - AS400API - - - - - - - - - - 8.51.0.59060 - true - .ts,.tsx,.cts,.mts - SonarQube - false - false - **/vendor/** - .tf - true - 60 - SonarAnalyzer.CSharp - false - false - .css,.less,.scss - .html,.xhtml,.cshtml,.vbhtml,.aspx,.ascx,.rhtml,.erb,.shtm,.shtml,.cmp,.twig - false - false - true - false - .scala - true - SonarAnalyzer.VisualBasic - AWSTemplateFormatVersion - true - 30 - 52 - https://secure.gravatar.com/avatar/{EMAIL_MD5}.jpg?s={SIZE}&d=identicon - 600 - .jsp,.jspf,.jspx - 1000 - amd,applescript,atomtest,browser,commonjs,couch,embertest,flow,greasemonkey,jasmine,jest,jquery,meteor,mocha,mongo,nashorn,node,phantomjs,prototypejs,protractor,qunit,rhino,serviceworker,shared-node-browser,shelljs,webextensions,worker,wsh,yui - false - **/vendor/** - false - .vb - 30 - true - py - .cs - true - SonarAnalyzer-8.51.0.59060.zip - .java,.jav - .kt - php,php3,php4,php5,phtml,inc - .xml,.xsd,.xsl - 260 - 3600000 - true - false - coverage-reports/*coverage-*.xml - 8.51.0.59060 - .go - sonarqube - 104 - true - **/vendor/** - false - as - 20 - false - https://api.github.com/ - .rb - true - xunit-reports/xunit-result-*.xml - angular,goog,google,OenLayers,d3,dojo,dojox,dijit,Backbone,moment,casper,_,sap - 24 - .yaml,.yml - false - true - https://github.com/ - SonarAnalyzer.VisualBasic - noreply@nowhere - 8.51.0.59060 - 4 - SonarAnalyzer.VisualBasic - [SONARQUBE] - false - csharp - true - .json - SAML - coverage/.resultset.json - SonarAnalyzer-8.51.0.59060.zip - true - main - SonarAnalyzer.CSharp - false - SonarAnalyzer.CSharp - 0.05,0.1,0.2,0.5 - false - true - 8.51.0.59060 - false - .js,.jsx,.cjs,.mjs,.vue - false - NOT_ACCEPTED - https://gitlab.com - vbnet - https://update.sonarsource.org/update-center.properties - 147B411E-AZmtNwrV3lb8QGbhu0SU - 10/4/2025 3:17:58 AM - - - http://host.docker.internal:9000 - **/coverage.opencover.xml - **/bin/**,**/obj/**,**/coverage.opencover.xml - - - - - cs - /workspaces/AS400API/.sonarqube/conf/Sonar-cs.ruleset - /workspaces/AS400API/.sonarqube/conf/Sonar-cs-none.ruleset - - - - /tmp/.sonarqube/resources/0/SonarAnalyzer.CFG.dll - /tmp/.sonarqube/resources/0/Google.Protobuf.dll - /tmp/.sonarqube/resources/0/SonarAnalyzer.CSharp.dll - /tmp/.sonarqube/resources/0/SonarAnalyzer.dll - /tmp/.sonarqube/resources/0/THIRD-PARTY-NOTICES.txt - - - - - /workspaces/AS400API/.sonarqube/conf/cs/SonarLint.xml - - - - vbnet - /workspaces/AS400API/.sonarqube/conf/Sonar-vbnet.ruleset - /workspaces/AS400API/.sonarqube/conf/Sonar-vbnet-none.ruleset - - - - /tmp/.sonarqube/resources/1/SonarAnalyzer.CFG.dll - /tmp/.sonarqube/resources/1/SonarAnalyzer.VisualBasic.dll - /tmp/.sonarqube/resources/1/Google.Protobuf.dll - /tmp/.sonarqube/resources/1/SonarAnalyzer.dll - /tmp/.sonarqube/resources/1/THIRD-PARTY-NOTICES.txt - - - - - /workspaces/AS400API/.sonarqube/conf/vbnet/SonarLint.xml - - - - \ No newline at end of file diff --git a/.sonarqube/conf/cs/SonarLint.xml b/.sonarqube/conf/cs/SonarLint.xml deleted file mode 100644 index 9783ca7..0000000 --- a/.sonarqube/conf/cs/SonarLint.xml +++ /dev/null @@ -1,869 +0,0 @@ - - - - - sonar.cs.opencover.reportsPaths - **/coverage.opencover.xml - - - sonar.cs.ignoreHeaderComments - true - - - sonar.cs.analyzeGeneratedCode - false - - - sonar.cs.file.suffixes - .cs - - - sonar.cs.roslyn.ignoreIssues - false - - - - - S2225 - - - S2346 - - - S2223 - - - S2344 - - - S2589 - - - S3433 - - - S1134 - - - S1135 - - - S2345 - - - S4524 - - - S2342 - - - format - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - flagsAttributeFormat - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?s$ - - - - - S2222 - - - S2583 - - - S2115 - - - S3447 - - - S2234 - - - S2479 - - - S3444 - - - S3445 - - - S1144 - - - S1264 - - - S2114 - - - S3442 - - - S3440 - - - S3443 - - - S3329 - - - S3449 - - - S3655 - - - S3776 - - - propertyThreshold - 3 - - - threshold - 15 - - - - - S2688 - - - S3897 - - - S1110 - - - S2201 - - - S4502 - - - S1118 - - - S2328 - - - S2681 - - - S1117 - - - S2326 - - - S3415 - - - S4507 - - - S1116 - - - S1479 - - - maximum - 30 - - - - - S2699 - - - S1125 - - - S2696 - - - S4635 - - - S1121 - - - S1123 - - - S2219 - - - S2692 - - - S1006 - - - S1481 - - - S3427 - - - S3237 - - - S3358 - - - S3598 - - - S3236 - - - S5773 - - - S2386 - - - S3597 - - - S4200 - - - S4201 - - - S1172 - - - S4457 - - - S5659 - - - S3249 - - - S4456 - - - S3005 - - - S3246 - - - S3247 - - - S4211 - - - S5547 - - - S3244 - - - S5542 - - - S1066 - - - S1186 - - - S4210 - - - S1185 - - - S2275 - - - S3241 - - - S2368 - - - S3457 - - - S4423 - - - S1155 - - - S2245 - - - S3456 - - - S3458 - - - S4426 - - - S2123 - - - S2365 - - - S2486 - - - S3453 - - - S3330 - - - S3451 - - - S5753 - - - S3217 - - - S3459 - - - S4428 - - - S3218 - - - S927 - - - S2259 - - - S3450 - - - S5766 - - - S1048 - - - S1168 - - - S2257 - - - S3466 - - - S2376 - - - S3343 - - - S3346 - - - S3464 - - - S2252 - - - S3220 - - - S4433 - - - S1163 - - - S4790 - - - S818 - - - S2251 - - - S2372 - - - S4792 - - - S2743 - - - S1656 - - - S907 - - - S2995 - - - S3600 - - - S3963 - - - S2996 - - - S2757 - - - S2755 - - - S2997 - - - S3604 - - - S1751 - - - S3603 - - - S3966 - - - S1643 - - - S1871 - - - S1764 - - - S2737 - - - S2971 - - - S2612 - - - S2857 - - - S3875 - - - S1210 - - - S3871 - - - S1450 - - - S2306 - - - S3877 - - - S1104 - - - S1215 - - - S1699 - - - S3998 - - - S3400 - - - S3884 - - - S3887 - - - S2551 - - - S3885 - - - S2436 - - - maxMethod - 3 - - - max - 2 - - - - - S3881 - - - S2437 - - - S3889 - - - S1313 - - - S3610 - - - S3972 - - - S3973 - - - S2761 - - - S3971 - - - S3984 - - - S4830 - - - S3981 - - - S1206 - - - S3626 - - - S3869 - - - S1940 - - - S1944 - - - S1905 - - - S1939 - - - S5034 - - - S4061 - - - S5042 - - - S1854 - - - S4070 - - - S1862 - - - S3927 - - - S3928 - - - S3925 - - - S3926 - - - S2953 - - - S3923 - - - S125 - - - S1607 - - - S1848 - - - S2930 - - - S3903 - - - S3904 - - - S2933 - - - S2934 - - - S6422 - - - S110 - - - max - 5 - - - - - S2068 - - - credentialWords - password, passwd, pwd, passphrase - - - - - S5332 - - - S112 - - - S2187 - - - S4487 - - - S6424 - - - S3397 - - - S2184 - - - S5693 - - - fileUploadSizeLimit - 8000000 - - - - - S6420 - - - S107 - - - max - 7 - - - - - S2183 - - - S108 - - - S4019 - - - S3169 - - - S3168 - - - S4015 - - - S4136 - - - S2077 - - - S2190 - - - S1199 - - - S3376 - - - S1075 - - - S3011 - - - S3256 - - - S4581 - - - S4586 - - - S3010 - - - S3251 - - - S4220 - - - S4583 - - - S5443 - - - S2178 - - - S3264 - - - S3267 - - - S101 - - - S5445 - - - S3262 - - - S3265 - - - S6419 - - - S2053 - - - S2292 - - - S3263 - - - S3260 - - - S3261 - - - S2290 - - - S2291 - - - S6444 - - - S4144 - - - S4143 - - - S3172 - - - S4159 - - - S4260 - - - S4036 - - - S4277 - - - S4035 - - - S4158 - - - S4275 - - - S2092 - - - S3060 - - - S5122 - - - - - diff --git a/.sonarqube/conf/vbnet/SonarLint.xml b/.sonarqube/conf/vbnet/SonarLint.xml deleted file mode 100644 index 0521585..0000000 --- a/.sonarqube/conf/vbnet/SonarLint.xml +++ /dev/null @@ -1,477 +0,0 @@ - - - - - sonar.vbnet.ignoreHeaderComments - true - - - sonar.vbnet.file.suffixes - .vb - - - sonar.vbnet.roslyn.ignoreIssues - false - - - sonar.vbnet.analyzeGeneratedCode - false - - - - - S1654 - - - format - ^[a-z][a-z0-9]*([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S2225 - - - S1135 - - - S2344 - - - S2346 - - - S2347 - - - format - ^(([a-z][a-z0-9]*)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?_)?([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S1134 - - - S2342 - - - flagsAttributeFormat - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?s$ - - - format - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S2345 - - - S2068 - - - credentialWords - password, passwd, pwd, passphrase - - - - - S2222 - - - S6146 - - - S112 - - - S2340 - - - S1656 - - - S2349 - - - S907 - - - S6145 - - - S5693 - - - fileUploadSizeLimit - 8000000 - - - - - S107 - - - max - 7 - - - - - S108 - - - S1940 - - - S2358 - - - S1542 - - - format - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S2234 - - - S2355 - - - S4136 - - - S2077 - - - S2352 - - - S2359 - - - S2757 - - - S3449 - - - S114 - - - format - ^I([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S117 - - - format - ^[a-z][a-z0-9]*([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S3603 - - - S3776 - - - propertyThreshold - 3 - - - threshold - 15 - - - - - S1110 - - - S1751 - - - S1871 - - - S1075 - - - S1197 - - - S3011 - - - S4586 - - - S1479 - - - maximum - 30 - - - - - S4507 - - - S4581 - - - S1643 - - - S4583 - - - S1123 - - - S1125 - - - S1764 - - - S101 - - - format - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?$ - - - - - S2178 - - - S5443 - - - S5445 - - - S2692 - - - S2737 - - - S3385 - - - S1481 - - - S1645 - - - S2612 - - - S3358 - - - S5042 - - - S2387 - - - S3598 - - - S3871 - - - S4201 - - - S1172 - - - S2304 - - - format - ^([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?(\.([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?)*$ - - - - - S3998 - - - S5659 - - - S1862 - - - S2951 - - - S5944 - - - S3884 - - - S5547 - - - S1066 - - - S2551 - - - S4210 - - - S5542 - - - S1186 - - - S3923 - - - S3926 - - - S3927 - - - S2437 - - - S3889 - - - S1313 - - - S2368 - - - S4423 - - - S1155 - - - S6444 - - - S2761 - - - S3453 - - - S2365 - - - S4144 - - - S5753 - - - S4428 - - - S927 - - - S4143 - - - S4260 - - - S1048 - - - S2259 - - - S4159 - - - S4830 - - - S2257 - - - S2375 - - - minimumSeriesLength - 6 - - - - - S3466 - - - S4036 - - - S3464 - - - S3981 - - - S4277 - - - S2376 - - - S1163 - - - S3903 - - - S3904 - - - S2372 - - - S3869 - - - S4790 - - - S4275 - - - S4792 - - - - - diff --git a/.sonarqube/out/.sonar/report-task.txt b/.sonarqube/out/.sonar/report-task.txt deleted file mode 100644 index 5a5c515..0000000 --- a/.sonarqube/out/.sonar/report-task.txt +++ /dev/null @@ -1,6 +0,0 @@ -projectKey=as400api -serverUrl=http://host.docker.internal:9000 -serverVersion=9.9.8.100196 -dashboardUrl=http://host.docker.internal:9000/dashboard?id=as400api -ceTaskId=AZmtj01mSkXasGRcHif1 -ceTaskUrl=http://host.docker.internal:9000/api/ce/task?id=AZmtj01mSkXasGRcHif1 diff --git a/.sonarqube/out/0/Issues.json b/.sonarqube/out/0/Issues.json deleted file mode 100644 index c134e37..0000000 --- a/.sonarqube/out/0/Issues.json +++ /dev/null @@ -1,625 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/sarif-1.0.0", - "version": "1.0.0", - "runs": [ - { - "tool": { - "name": "Microsoft (R) Visual C# Compiler", - "version": "4.14.0.0", - "fileVersion": "4.14.0-3.25413.5 (b828a8df)", - "semanticVersion": "4.14.0", - "language": "en-US" - }, - "results": [ - { - "ruleId": "S125", - "level": "warning", - "message": "Remove this commented out code.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 147, - "startColumn": 17, - "endLine": 147, - "endColumn": 97 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S125", - "level": "warning", - "message": "Remove this commented out code.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Program.cs", - "region": { - "startLine": 11, - "startColumn": 1, - "endLine": 11, - "endColumn": 53 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S2068", - "level": "warning", - "message": "\"password\" detected here, make sure this is not a hard-coded credential.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/appsettings.json", - "region": { - "startLine": 6, - "startColumn": 18, - "endLine": 6, - "endColumn": 24 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S1144", - "level": "warning", - "message": "Remove the unused private field 'LibraryNamePattern'.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 152, - "startColumn": 5, - "endLine": 152, - "endColumn": 125 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S101", - "level": "warning", - "message": "Rename class 'ORDUAGEndpoint' to match pascal case naming rules, consider using 'OrduagEndpoint'.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 15, - "startColumn": 21, - "endLine": 15, - "endColumn": 35 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S6444", - "level": "warning", - "message": "Pass a timeout to limit the execution time.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 152, - "startColumn": 56, - "endLine": 152, - "endColumn": 124 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "SYSLIB1045", - "level": "note", - "message": "Use 'GeneratedRegexAttribute' to generate the regular expression implementation at compile-time.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 152, - "startColumn": 56, - "endLine": 152, - "endColumn": 124 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "S3776", - "level": "warning", - "message": "Refactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 16, - "startColumn": 37, - "endLine": 16, - "endColumn": 54 - } - } - } - ], - "relatedLocations": [ - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 24, - "startColumn": 17, - "endLine": 24, - "endColumn": 19 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 36, - "startColumn": 13, - "endLine": 36, - "endColumn": 18 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 59, - "startColumn": 13, - "endLine": 59, - "endColumn": 18 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 74, - "startColumn": 17, - "endLine": 74, - "endColumn": 19 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 92, - "startColumn": 13, - "endLine": 92, - "endColumn": 18 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 107, - "startColumn": 17, - "endLine": 107, - "endColumn": 19 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 107, - "startColumn": 60, - "endLine": 107, - "endColumn": 62 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 135, - "startColumn": 21, - "endLine": 135, - "endColumn": 26 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 138, - "startColumn": 25, - "endLine": 138, - "endColumn": 28 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/As400Endpoints.cs", - "region": { - "startLine": 154, - "startColumn": 13, - "endLine": 154, - "endColumn": 18 - } - } - } - ], - "properties": { - "warningLevel": 1, - "customProperties": { - "0": "+2 (incl 1 for nesting)", - "1": "+2 (incl 1 for nesting)", - "2": "+2 (incl 1 for nesting)", - "3": "+2 (incl 1 for nesting)", - "4": "+2 (incl 1 for nesting)", - "5": "+2 (incl 1 for nesting)", - "6": "+1", - "7": "+2 (incl 1 for nesting)", - "8": "+3 (incl 2 for nesting)", - "9": "+2 (incl 1 for nesting)" - } - } - }, - { - "ruleId": "S3776", - "level": "warning", - "message": "Refactor this method to reduce its Cognitive Complexity from 19 to the 15 allowed.", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 154, - "startColumn": 37, - "endLine": 154, - "endColumn": 55 - } - } - } - ], - "relatedLocations": [ - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 167, - "startColumn": 21, - "endLine": 167, - "endColumn": 23 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 177, - "startColumn": 21, - "endLine": 177, - "endColumn": 23 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 192, - "startColumn": 21, - "endLine": 192, - "endColumn": 23 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 198, - "startColumn": 21, - "endLine": 198, - "endColumn": 23 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 204, - "startColumn": 21, - "endLine": 204, - "endColumn": 23 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 219, - "startColumn": 21, - "endLine": 219, - "endColumn": 28 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 229, - "startColumn": 25, - "endLine": 229, - "endColumn": 30 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 232, - "startColumn": 29, - "endLine": 232, - "endColumn": 32 - } - } - }, - { - "physicalLocation": { - "uri": "file:///workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs", - "region": { - "startLine": 254, - "startColumn": 17, - "endLine": 254, - "endColumn": 22 - } - } - } - ], - "properties": { - "warningLevel": 1, - "customProperties": { - "0": "+2 (incl 1 for nesting)", - "1": "+2 (incl 1 for nesting)", - "2": "+2 (incl 1 for nesting)", - "3": "+2 (incl 1 for nesting)", - "4": "+2 (incl 1 for nesting)", - "5": "+2 (incl 1 for nesting)", - "6": "+2 (incl 1 for nesting)", - "7": "+3 (incl 2 for nesting)", - "8": "+2 (incl 1 for nesting)" - } - } - }, - { - "ruleId": "ASP0025", - "level": "note", - "message": "Use AddAuthorizationBuilder to register authorization services and construct policies", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Program.cs", - "region": { - "startLine": 100, - "startColumn": 1, - "endLine": 106, - "endColumn": 3 - } - } - } - ], - "properties": { - "warningLevel": 1 - } - }, - { - "ruleId": "CA1861", - "level": "note", - "message": "Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array", - "locations": [ - { - "resultFile": { - "uri": "file:///workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs", - "region": { - "startLine": 48, - "startColumn": 20, - "endLine": 48, - "endColumn": 43 - } - } - } - ], - "properties": { - "warningLevel": 1, - "customProperties": { - "paramName": "separator" - } - } - } - ], - "rules": { - "ASP0025": { - "id": "ASP0025", - "shortDescription": "Use AddAuthorizationBuilder", - "defaultLevel": "note", - "helpUri": "https://aka.ms/aspnet/analyzers", - "properties": { - "category": "Usage", - "isEnabledByDefault": true - } - }, - "CA1861": { - "id": "CA1861", - "shortDescription": "Avoid constant arrays as arguments", - "fullDescription": "Constant arrays passed as arguments are not reused when called repeatedly, which implies a new array is created each time. Consider extracting them to 'static readonly' fields to improve performance if the passed array is not mutated within the called method.", - "defaultLevel": "note", - "helpUri": "https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1861", - "properties": { - "category": "Performance", - "isEnabledByDefault": true, - "tags": [ - "Telemetry", - "EnabledRuleInAggressiveMode" - ] - } - }, - "S101": { - "id": "S101", - "shortDescription": "Types should be named in PascalCase", - "fullDescription": "Shared naming conventions allow teams to collaborate efficiently. This rule checks whether or not type names are using PascalCase. To reduce noise, two consecutive upper case characters are allowed unless they form the whole type name. So, MyXClass is compliant, but XC on its own is not.", - "defaultLevel": "warning", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-101", - "properties": { - "category": "Minor Code Smell", - "isEnabledByDefault": true, - "tags": [ - "C#", - "MainSourceScope", - "TestSourceScope", - "SonarWay" - ] - } - }, - "S1144": { - "id": "S1144", - "shortDescription": "Unused private types or members should be removed", - "fullDescription": "private or internal types or private members that are never executed or referenced are dead code: unnecessary, inoperative code that should be removed. Cleaning out dead code decreases the size of the maintained codebase, making it easier to understand the program and preventing bugs from being introduced.", - "defaultLevel": "note", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-1144", - "properties": { - "category": "Major Code Smell", - "isEnabledByDefault": true, - "tags": [ - "C#", - "MainSourceScope", - "TestSourceScope", - "SonarWay", - "Unnecessary" - ] - } - }, - "S125": { - "id": "S125", - "shortDescription": "Sections of code should not be commented out", - "fullDescription": "Programmers should not comment out code as it bloats programs and reduces readability.", - "defaultLevel": "warning", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-125", - "properties": { - "category": "Major Code Smell", - "isEnabledByDefault": true, - "tags": [ - "C#", - "MainSourceScope", - "TestSourceScope", - "SonarWay" - ] - } - }, - "S2068": { - "id": "S2068", - "shortDescription": "Hard-coded credentials are security-sensitive", - "fullDescription": "Because it is easy to extract strings from an application source code or binary, credentials should not be hard-coded. This is particularly true for applications that are distributed or that are open-source.", - "defaultLevel": "warning", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-2068", - "properties": { - "category": "Blocker Security Hotspot", - "isEnabledByDefault": true, - "tags": [ - "C#", - "MainSourceScope", - "SonarWay" - ] - } - }, - "S3776": { - "id": "S3776", - "shortDescription": "Cognitive Complexity of methods should not be too high", - "fullDescription": "Cognitive Complexity is a measure of how hard the control flow of a method is to understand. Methods with high Cognitive Complexity will be difficult to maintain.", - "defaultLevel": "warning", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-3776", - "properties": { - "category": "Critical Code Smell", - "isEnabledByDefault": false, - "tags": [ - "C#", - "MainSourceScope", - "TestSourceScope", - "SonarWay" - ] - } - }, - "S6444": { - "id": "S6444", - "shortDescription": "Not specifying a timeout for regular expressions is security-sensitive", - "fullDescription": "Not specifying a timeout for regular expressions can lead to a Denial-of-Service attack. Pass a timeout when using System.Text.RegularExpressions to process untrusted input because a malicious user might craft a value for which the evaluation lasts excessively long.", - "defaultLevel": "warning", - "helpUri": "https://rules.sonarsource.com/csharp/RSPEC-6444", - "properties": { - "category": "Major Security Hotspot", - "isEnabledByDefault": true, - "tags": [ - "C#", - "MainSourceScope", - "SonarWay" - ] - } - }, - "SYSLIB1045": { - "id": "SYSLIB1045", - "shortDescription": "Convert to 'GeneratedRegexAttribute'.", - "defaultLevel": "note", - "helpUri": "https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1045", - "properties": { - "category": "Performance", - "isEnabledByDefault": true - } - } - } - } - ] -} \ No newline at end of file diff --git a/.sonarqube/out/0/output-cs/metrics.pb b/.sonarqube/out/0/output-cs/metrics.pb deleted file mode 100644 index 5135524..0000000 --- a/.sonarqube/out/0/output-cs/metrics.pb +++ /dev/null @@ -1,30 +0,0 @@ -5 -)/workspaces/AS400API/Auth/AuthPolicies.csrH -%/workspaces/AS400API/Auth/DemoUser.cs 8r - ‚ - ] -*/workspaces/AS400API/Auth/DemoUserStore.cs 8r  !"‚  1 -)/workspaces/AS400API/Auth/LoginRequest.csr3 -*/workspaces/AS400API/Auth/LoginResponse.csrX -+/workspaces/AS400API/Auth/PasswordHasher.cs 8r - ‚. -"/workspaces/AS400API/Auth/Roles.csrn -)/workspaces/AS400API/Auth/TokenService.cs 8r(  "#$%'()*+,./0x‚ "$()+.[ -0/workspaces/AS400API/Configuration/JwtOptions.cs 8 r - x‚p -1/workspaces/AS400API/Configuration/OdbcOptions.cs 8j r -  !"#$%&x‚  !"#$Ç -0/workspaces/AS400API/Endpoints/As400Endpoints.csD 8 j“” r¯ -  !"#$%&'()*+,-/0123456789:;<=>?@ABDEFGHIJKLMNPQRSTUWXYZ[\]^_`abcefghijklmnoqrstuvwyz|}~€‚„…†‡ˆ‰Š‹Œ‘–—˜™š›œžŸ¡£¤¥x‚N !"&'*/146789=>ADFIJLMWXYZ^_begjkmnyz|}~€‚…‡‰ŠŒ–—˜œ£« -6/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs5 8j„r÷ -  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–˜š›œžŸ ¡¢£¤¦§¨©ª«­®°±²³´¶¸¹º»¼¾ÀÁÂÃÄÆÇÈÉÊÌÍÎÏÐÒÓÕÖØÙÛÜÝÞßàâãäåæçèéêëìîïðòóôõö÷øùûüýþÿ€‚ƒ…‡ˆŠ‹ŒŽ’”•–x‚h˜œ¡¤¦§©ª­®±³¹º»¼ÀÂÃÆÈÉÌÎÏÒÓÕÖØÙÛÝÞßãåçèêëîòôõö÷ûü€‡z -//workspaces/AS400API/Endpoints/AuthEndpoints.cs 8 r*  !"#%&'()*+,./0x‚!"#%'().u -1/workspaces/AS400API/Endpoints/SystemEndpoints.cs 8r& - !"#$%&')*+x‚ !%)³ -;/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs 8rK -  !"#%&()*+,-/01245679:;<=>?ABDEFGHIJKLNOPQRSUVWx‚ !"%*,/01469<>AEFIKNOQUo -;/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs 8r - x‚ - - Û -/workspaces/AS400API/Program.csQ8j *„…rj  !#$%&'(+,-/012345689:;<=>?@ABCDEGHIJKLMNOPQSTUVWXYZ[\]^_`abdefghijlnopqrtvwy{|}~x‚;  !#$%'+,-/02<=BGHJMNOPQSTUWZ\`dfghilnpqtvwy{|}~ \ No newline at end of file diff --git a/.sonarqube/out/0/output-cs/symrefs.pb b/.sonarqube/out/0/output-cs/symrefs.pb deleted file mode 100644 index 8f59c53..0000000 --- a/.sonarqube/out/0/output-cs/symrefs.pb +++ /dev/null @@ -1,448 +0,0 @@ -O -)/workspaces/AS400API/Auth/AuthPolicies.cs - -  - - ' - - $ã -%/workspaces/AS400API/Auth/DemoUser.cs - -  - #    -, 8 - - # -A M   # -k p    -     -  - -  -     -' ,   à -*/workspaces/AS400API/Auth/DemoUserStore.cs - - ! -  2 8     - - / -7 ? # -- 1$ ( - - # -- 1( ,; ? -: B & - & " % -. 6   $ -? G7 ? -e j  2 7 -   & * -   , 0O -)/workspaces/AS400API/Auth/LoginRequest.cs - - ! - -) 1 - -: Bh -*/workspaces/AS400API/Auth/LoginResponse.cs - - " - -* 5 - -; D - -M V - -t y÷ -+/workspaces/AS400API/Auth/PasswordHasher.cs - - " -   2 : - - - f mo v -   Z dc m - -  - 9 -  A I- 5 - 7 ;J N - ' 0 - -  -% -1 9 -6 @3 = -I S1 ; - ; D - D Q - 7 BH -"/workspaces/AS400API/Auth/Roles.cs - -  - -  - - £ -)/workspaces/AS400API/Auth/TokenService.cs - -   < -   ( < D(( )) ++0 8 -- :..  -# *  - - ( -' +- 1! %"" ! - ,, 2 - $$ **  -'' ..( -¤ -0/workspaces/AS400API/Configuration/JwtOptions.cs - -  - - # - - - -  - -    -   & )I L -   ) & - - © -1/workspaces/AS400API/Configuration/OdbcOptions.cs - -  -   -   #' 7X h - - - ' +? C -   ' /C K -   ' -  D J - !!' 0!!J S - ""' 3""Q ] - ##  - - $ -  "Z - : ?. 32 7  0 5!!3 8""6 ;## $$ %à - -0/workspaces/AS400API/Endpoints/As400Endpoints.cs - - " - -$ 5> -M R // DD ee  -££ ( -6 9. 1Y \2 5 -J N " & -_ l &2 -   !! &&  -    $ -   !!O X""" + -//B F44 66% ) -//W d11 & -11 88 ==  -55 %665 = -66 77 ' -77 88H Q99" +2 -DD7 BJJ. 9WWD OXXk v^^Z e -DDS WII WW$ ( -DDh uFF &( -FF LL XX ^^  -PP %WW4 < -WW XX] cYY & -YY ZZ" +6 -ee@ Kkk. 9}}) 4 -––f q -œœT _8 -eeT ]kkX a -' 0 -––s | -œœa j -een rjj yy* . - -eeƒ gg &, -gg mm  -––  -œœ  -qq %zz& .L -yy 'zz ||' .~~  -€€% , -‚‚  -……0 7 -|| $}} ~~' 7$ - -€€ " -  -‚‚' 50 - -„„  -  -––W ^ -—— '< - -……! ' -‡‡! ' -ŠŠ, 2 -ŒŒ & -ŒŒ5 ;$ - -‰‰  -ŒŒ  -$ '< - -ŠŠ! " -ŠŠ( ) -ŠŠ? @ -ŒŒ/ 0 -ŒŒO P - -——  -˜˜" + - -——/ 3 -——7 ;ä -6/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs - - " -% 0 -ºº= H - -˜˜" 4 - -šš$ 6$ - -ššN S -œœ  -‡‡ œ - -+ 0 -¦¦ $ -©©X ] -­­# ( -ÀÀ3 8 -ÃÃ, 1 -ÆÆ3 8 -ÉÉ, 1 -ÌÌ3 8 -ÏÏ, 1 -õõ  -öö  -÷÷ $ - -žž # -¤¤  -ØØ. 2 - -ŸŸ , -¡¡ *0 - -¡¡  -©©  -òò  -€€ < - -¦¦  -§§  -ªª  -°°, 0 -øø H - -­­  -®®  -®®* 2 -°°8 @ -ÖÖ( 0 -ùù $ - -°° " -±± " -¶¶& 0 - -¶¶  -ÕÕ( .„ - -¸¸ " -¹¹  -ºº  -»»  -¼¼  - " -ÈÈ " -ÎÎ " -ÒÒ  -ÓÓ  -ÙÙ* 4 - -ººP V -ººa gT - -¾¾ ' -Ãà ' -ÉÉ ' -ÏÏ ' -ÕÕ # -ÖÖ # -ÛÛ* 9< - -ØØ$ + -ÙÙ  -ÝÝ( / -ßß  -ãã4 ;$ - -ÝÝ % -ÞÞ ! -ßß/ 80 - -ââ  -îî  -ôô  -ûû$ (< - -ãã% + -åå% + -èè0 6 -êê, 2 -ëë$ *$ - -çç # -ëë # -îî% (< - -èè% & -èè, - -èèC D -êêF G -ëë3 4 - -êê$ ) -ëë9 > - -ûû ! -üü& / - -ûû0 4 -ûû8 < - -ŠŠ # - *0 - -ŒŒ ! -ÀÀ9 C -ÃÃ2 < -õõ (0 - -ŽŽ " -ÆÆ9 D -ÉÉ2 = -öö )0 - -  -ÌÌ9 B -ÏÏ2 ; -÷÷ '$ - -’’  -¦¦% ) -©©^ b - -””  -­­) 1¶ -//workspaces/AS400API/Endpoints/AuthEndpoints.cs - -   ! - -  $ 4( -  L Q %% .. < -J Q = Dl s7 >E L -a j &! * - y … * - -’ œ= G2 -  ? C7 ;s w - 0 ;( -%%6 :'' ''2 6((  -'' ))$ , -(( )). 3 -((= >((B C -1/workspaces/AS400API/Endpoints/SystemEndpoints.cs - -   # - -  ( 8 -  T W     - -$ 6 -N S ))  -9 =  $ -  ) , -   " - S TÇ -;/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs - - ( - - - -< S - - -n r    -3 7 ! - -/ D -f l " - "" %%  -!! ""  -(( %!!E P2 -((- 2**! &,, // 66 F -// 44 99 ;; "EE FF $HH " -11 11 2 -;; << >> AA) 0AA7 >2 -DD EE -NN QQ UU ( -FF FF FF- .HH# $2 -HH II NN, 3OO QQ !‰ -;/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs - - ( - - ,( -? E - -   %( -K R - - #$ +6 = -    - ' "( - & 2  õ -/workspaces/AS400API/Program.cs -     + 6v -     ++ // 00 MM NN OO PP QQ SS dd ll -  -  ' - -" * -, ? n - . 2     !! ## "$$ "%% "MM "NNC G: -++ ,, ---A KOO (ZZ $\\ & --- ^^ )( -00 &22 GG HH ( -88 GG" 0GG? MJJ -  - -NN+ , -UU WW  -dd" )ff hh  -ff4 :gg  -hh1 7ii \ -ll nn pp qq tt vv ww yy {{ -  * -{{ || }} ~~   \ No newline at end of file diff --git a/.sonarqube/out/0/output-cs/token-cpd.pb b/.sonarqube/out/0/output-cs/token-cpd.pb deleted file mode 100644 index c17bae0..0000000 --- a/.sonarqube/out/0/output-cs/token-cpd.pb +++ /dev/null @@ -1,5928 +0,0 @@ -€ -)/workspaces/AS400API/Auth/AuthPolicies.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -static  -class  - AuthPolicies  -{  -public - -const  -string  -RequireOperator ' -=( ) -$str* ; -;; < -public - -const  -string  - RequireAdmin $ -=% & -$str' 5 -;5 6 -} Ð -%/workspaces/AS400API/Auth/DemoUser.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -sealed  -class  -DemoUser  -{  -public - -DemoUser  -(  -string  -username # -,# $ -string% + - passwordHash, 8 -,8 9 -string: @ - passwordSaltA M -,M N -IReadOnlyCollectionO b -<b c -stringc i ->i j -rolesk p -)p q -{  -Username    -=    -username    -;    - PasswordHash - -  -= - -  - passwordHash - - # -; - -# $ - PasswordSalt    -=    - passwordSalt   # -;  # $ -Roles    -=    -roles    -;    -}    -public - -string  -Username  -{  -get  -; ! -}" # -public - -string  - PasswordHash  -{  -get! $ -;$ % -}& ' -public - -string  - PasswordSalt  -{  -get! $ -;$ % -}& ' -public - -IReadOnlyCollection  -<  -string % ->% & -Roles' , -{- . -get/ 2 -;2 3 -}4 5 -} – -*/workspaces/AS400API/Auth/DemoUserStore.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -sealed  -class  - DemoUserStore ! -{  -private    -readonly    - -Dictionary    -<    -string   & -,  & ' -DemoUser  ( 0 ->  0 1 -_users  2 8 -;  8 9 -public   - - DemoUserStore    -(    -)    -{    -_users    -=    -new    - -Dictionary    -<    -string   & -,  & ' -DemoUser  ( 0 ->  0 1 -(  1 2 -StringComparer  2 @ -.  @ A -OrdinalIgnoreCase  A R -)  R S -{  -[  -$str  -]  -=  - -CreateUser " -(" # -$str# * -,* + -$str, 6 -,6 7 -new8 ; -[; < -]< = -{> ? -Roles@ E -.E F -AdminF K -,K L -RolesM R -.R S -OperatorS [ -}\ ] -)] ^ -,^ _ -[  -$str  -]  -=  - -CreateUser % -(% & -$str& 0 -,0 1 -$str2 < -,< = -new> A -[A B -]B C -{D E -RolesF K -.K L -OperatorL T -}U V -)V W -}  -; - -}  -public - - ValueTask  -<  -DemoUser  -?  ->  -FindByNameAsync / -(/ 0 -string0 6 -username7 ? -)? @ -{  -_users  -.  - TryGetValue  -(  -username # -,# $ -out% ( -var) , -user- 1 -)1 2 -;2 3 -return  - ValueTask  -.  - -FromResult # -(# $ -user$ ( -)( ) -;) * -}  -public - -bool  -ValidateCredentials # -(# $ -DemoUser$ , -user- 1 -,1 2 -string3 9 -password: B -)B C -=>D F -PasswordHasher  -.  -Verify  -(  -password & -,& ' -user( , -., - - PasswordHash- 9 -,9 : -user; ? -.? @ - PasswordSalt@ L -)L M -;M N -private  -static  -DemoUser  - -CreateUser & -(& ' -string' - -username. 6 -,6 7 -string8 > -password? G -,G H -IReadOnlyCollectionI \ -<\ ] -string] c ->c d -rolese j -)j k -{  -var  -(  -hash  -,  -salt  -)  -=  -PasswordHasher ) -.) * - HashPassword* 6 -(6 7 -password7 ? -)? @ -;@ A -return    -new    -DemoUser    -(    -username   $ -,  $ % -hash  & * -,  * + -salt  , 0 -,  0 1 -roles  2 7 -)  7 8 -;  8 9 -}!!  -}"" ê -)/workspaces/AS400API/Auth/LoginRequest.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -sealed  -record  - LoginRequest ! -(! " -string" ( -Username) 1 -,1 2 -string3 9 -Password: B -)B C -;C Dœ -*/workspaces/AS400API/Auth/LoginResponse.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -sealed  -record  - LoginResponse " -(" # -string# ) - AccessToken* 5 -,5 6 -int7 : - ExpiresIn; D -,D E -stringF L - TokenTypeM V -,V W -IReadOnlyCollectionX k -<k l -stringl r ->r s -Rolest y -)y z -;z {þ -+/workspaces/AS400API/Auth/PasswordHasher.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -static  -class  -PasswordHasher " -{  -private    -const    -int    -SaltSize    -=    -$num  ! # -;  # $ -private - -  -const - -  -int - -  -KeySize - -  -= - -  -$num - - " -; - -" # -private    -const    -int    - -Iterations    -=  ! " -$num  # * -;  * + -public   - -static    -(    -string    -Hash    -,    -string   & -Salt  ' + -)  + , - HashPassword  - 9 -(  9 : -string  : @ -password  A I -)  I J -{  -var  -salt  -= ! -RandomNumberGenerator ( -.( ) -GetBytes) 1 -(1 2 -SaltSize2 : -): ; -;; < -var  - hashBytes  -=  - KeyDerivation % -.% & -Pbkdf2& , -(, - -password- 5 -,5 6 -salt7 ; -,; < -KeyDerivationPrf= M -.M N - -HMACSHA256N X -,X Y - -IterationsZ d -,d e -KeySizef m -)m n -;n o -return  -(  -Convert  -.  -ToBase64String & -(& ' - hashBytes' 0 -)0 1 -,1 2 -Convert3 : -.: ; -ToBase64String; I -(I J -saltJ N -)N O -)O P -;P Q -}  -public - -static  -bool  -Verify  -(  -string $ -password% - -,- . -string/ 5 - -storedHash6 @ -,@ A -stringB H - -storedSaltI S -)S T -{  -var  - saltBytes  -=  -Convert  -.  -FromBase64String 0 -(0 1 - -storedSalt1 ; -); < -;< = -var  - computedBytes  -=  - KeyDerivation ) -.) * -Pbkdf2* 0 -(0 1 -password1 9 -,9 : - saltBytes; D -,D E -KeyDerivationPrfF V -.V W - -HMACSHA256W a -,a b - -Iterationsc m -,m n -KeySizeo v -)v w -;w x -var  - storedBytes  -=  -Convert ! -.! " -FromBase64String" 2 -(2 3 - -storedHash3 = -)= > -;> ? -return # -CryptographicOperations & -.& ' -FixedTimeEquals' 6 -(6 7 - storedBytes7 B -,B C - computedBytesD Q -)Q R -;R S -}  -} ä -"/workspaces/AS400API/Auth/Roles.cs - namespace  -AS400API -  -.  -Auth  -;  -public  -static  -class  -Roles  -{  -public - -const  -string  -Admin  -=  -$str ' -;' ( -public - -const  -string  -Operator  -=! " -$str# - -;- . -} © -)/workspaces/AS400API/Auth/TokenService.cs - namespace   -AS400API   -  -.    -Auth    -;    -public   -sealed    -class    - TokenService    -{   -private    -readonly    - -JwtOptions    -_options   ( -;  ( ) -private  -readonly # -JwtSecurityTokenHandler , - _tokenHandler- : -=; < -new= @ -(@ A -)A B -;B C -public - - TokenService  -(  - -JwtOptions " -options# * -)* + -{  -_options  -=  -options  -;  -}  -public - -string  - CreateToken  -(  -DemoUser & -user' + -)+ , -{  -var  -signingCredentials  -=  -new! $ -SigningCredentials% 7 -(7 8 -new  -SymmetricSecurityKey $ -($ % -Encoding% - -.- . -UTF8. 2 -.2 3 -GetBytes3 ; -(; < -_options< D -.D E -KeyE H -)H I -)I J -,J K -SecurityAlgorithms  -.  - -HmacSha256 ) -)) * -;* + -var  -claims  -=  -new  -List  -<  -Claim # -># $ -{  -new  -( # -JwtRegisteredClaimNames ' -.' ( -Sub( + -,+ , -user- 1 -.1 2 -Username2 : -): ; -,; < -new  -( # -JwtRegisteredClaimNames ' -.' ( -Jti( + -,+ , -Guid- 1 -.1 2 -NewGuid2 9 -(9 : -): ; -.; < -ToString< D -(D E -)E F -)F G -,G H -new  -(  - -ClaimTypes  -.  -Name  -,  -user! % -.% & -Username& . -). / -}    -;   - -foreach""  -(""  -var""  -role""  -in""  -user"" ! -.""! " -Roles""" ' -)""' ( -{##  -claims$$  -.$$  -Add$$  -($$  -new$$  -Claim$$  -($$ ! - -ClaimTypes$$! + -.$$+ , -Role$$, 0 -,$$0 1 -role$$2 6 -)$$6 7 -)$$7 8 -;$$8 9 -}%%  -var''  -token''  -=''  -new''  -JwtSecurityToken'' ( -(''( ) -issuer((  -:((  -_options((  -.((  -Issuer(( # -,((# $ -audience))  -:))  -_options))  -.))  -Audience)) ' -,))' ( -claims**  -:**  -claims**  -,**  -expires++  -:++  -DateTime++  -.++  -UtcNow++ $ -.++$ % - -AddMinutes++% / -(++/ 0 -_options++0 8 -.++8 9& -AccessTokenLifetimeMinutes++9 S -)++S T -,++T U -signingCredentials,,  -:,,  -signingCredentials,, 2 -),,2 3 -;,,3 4 -return..  - _tokenHandler..  -...  - -WriteToken.. ' -(..' ( -token..( - -)..- . -;... / -}//  -}00 å -0/workspaces/AS400API/Configuration/JwtOptions.cs - namespace  -AS400API -  -.  - Configuration  -; ! -public  -sealed  -class  - -JwtOptions  -{  -public - -const  -string  - SectionName # -=$ % -$str& + -;+ , -public - - - -string - -  -Issuer - -  -{ - -  -get - -  -; - -  -set - - # -; - -# $ -} - -% & -= - -' ( -$str - -) 3 -; - -3 4 -public   - -string    -Audience    -{    -get    -;   ! -set  " % -;  % & -}  ' ( -=  ) * -$str  + = -;  = > -public   - -string    -Key    -{    -get    -;    -set    -;   ! -}  " # -=  $ % -$str  & I -;  I J -public   - -int   & -AccessTokenLifetimeMinutes   ) -{  * + -get  , / -;  / 0 -set  1 4 -;  4 5 -}  6 7 -=  8 9 -$num  : < -;  < = -public - -void  - EnsureIsValid  -(  -)  -{  -if - -(  -string  -.  -IsNullOrWhiteSpace % -(% & -Key& ) -)) * -||+ - -Encoding. 6 -.6 7 -UTF87 ; -.; < - GetByteCount< H -(H I -KeyI L -)L M -<N O -$numP R -)R S -{  -throw  -new % -InvalidOperationException / -(/ 0 -$str0  -)  € -; -€  -}  -if - -( & -AccessTokenLifetimeMinutes & -<=' ) -$num* + -)+ , -{  -throw  -new % -InvalidOperationException / -(/ 0 -$str0 k -)k l -;l m -}  -}  -} ª( -1/workspaces/AS400API/Configuration/OdbcOptions.cs - namespace  -AS400API -  -.  - Configuration  -; ! -public  -sealed  -class  - OdbcOptions  -{  -public - -string  -?  -System  -{  -get  -;  -set! $ -;$ % -}& ' -public   - -string    -?    -DefaultLibraries   # -{  $ % -get  & ) -;  ) * -set  + . -;  . / -}  0 1 -public - - - -string - -  -? - -  -User - -  -{ - -  -get - -  -; - -  -set - - " -; - -" # -} - -$ % -public   - -string    -?    -Password    -{    -get   ! -;  ! " -set  # & -;  & ' -}  ( ) -public - -string  -?  -Naming  -{  -get  -;  -set! $ -;$ % -}& ' -public - -string  -?  - Translate  -{  -get " -;" # -set$ ' -;' ( -}) * -=+ , -$str- 0 -;0 1 -public - -string  -?  - ClientLocale  -{ ! -get" % -;% & -set' * -;* + -}, - -=. / -$str0 7 -;7 8 -public - -bool  -Pooling  -{  -get  -;  -set " -;" # -}$ % -=& ' -true( , -;, - -public - -string  -ToConnectionString $ -($ % -)% & -{  -var  - -driverName  -=  - Environment $ -.$ %" -GetEnvironmentVariable% ; -(; < -$str< O -)O P -??Q S -$strT n -;n o -var  -parts  -=  -new  -List  -<  -string # -># $ -{  -$"  -$str  -{  - -driverName " -}" # -$str# % -"% & -,& ' -$"  -$str  -{  -System  -}  -"  -}  -; - -if - -(  -!  -string  -.  -IsNullOrWhiteSpace & -(& ' -DefaultLibraries' 7 -)7 8 -)8 9 -parts: ? -.? @ -Add@ C -(C D -$"D F -$strF W -{W X -DefaultLibrariesX h -}h i -"i j -)j k -;k l -if - -(  -!  -string  -.  -IsNullOrWhiteSpace & -(& ' -User' + -)+ , -), - -parts. 3 -.3 4 -Add4 7 -(7 8 -$"8 : -$str: > -{> ? -User? C -}C D -"D E -)E F -;F G -if - -(  -!  -string  -.  -IsNullOrWhiteSpace & -(& ' -Password' / -)/ 0 -)0 1 -parts2 7 -.7 8 -Add8 ; -(; < -$"< > -$str> B -{B C -PasswordC K -}K L -"L M -)M N -;N O -if   - -(    -!    -string    -.    -IsNullOrWhiteSpace   & -(  & ' -Naming  ' - -)  - . -)  . / -parts  0 5 -.  5 6 -Add  6 9 -(  9 : -$"  : < -$str  < C -{  C D -Naming  D J -}  J K -"  K L -)  L M -;  M N -if!! - -(!!  -!!!  -string!!  -.!!  -IsNullOrWhiteSpace!! & -(!!& ' - Translate!!' 0 -)!!0 1 -)!!1 2 -parts!!3 8 -.!!8 9 -Add!!9 < -(!!< = -$"!!= ? -$str!!? I -{!!I J - Translate!!J S -}!!S T -"!!T U -)!!U V -;!!V W -if"" - -(""  -!""  -string""  -.""  -IsNullOrWhiteSpace"" & -(""& ' - ClientLocale""' 3 -)""3 4 -)""4 5 -parts""6 ; -.""; < -Add""< ? -(""? @ -$"""@ B -$str""B P -{""P Q - ClientLocale""Q ] -}""] ^ -"""^ _ -)""_ ` -;""` a -if## - -(##  -Pooling##  -)##  -parts##  -.##  -Add##  -(##  -$str## - -)##- . -;##. / -return$$  -string$$  -.$$  -Join$$  -($$  -$str$$  -,$$  -parts$$ % -)$$% & -;$$& ' -}%%  -}&& Ë} -0/workspaces/AS400API/Endpoints/As400Endpoints.cs - namespace   -AS400API   -  -.    - Endpoints    -;    -public  -static  -class  -As400Endpoints " -{  -public - -static  -RouteGroupBuilder # -MapAs400Endpoints$ 5 -(5 6 -this6 : -RouteGroupBuilder; L -groupM R -)R S -{  -group  -.  -MapGet  -(  -$str & -,& ' -async( - -(. / -string/ 5 -sql6 9 -,9 : -OdbcConnection; I -connJ N -,N O -ILoggerFactoryP ^ - loggerFactory_ l -)l m -=>n p -{  -var  -logger  -=  - loggerFactory & -.& ' - CreateLogger' 3 -(3 4 -$str4 H -)H I -;I J -try  -{  -await  -conn  -.  - OpenAsync $ -($ % -)% & -;& ' -if  -(  -string  -.  -IsNullOrWhiteSpace - -(- . -sql. 1 -)1 2 -)2 3 -{  -logger  -.  - -LogWarning % -(% & -$str& _ -)_ ` -;` a -return  -Results " -." # - -BadRequest# - -(- . -new. 1 -{2 3 -error4 9 -=: ; -$str< ` -}a b -)b c -;c d -}  -logger  -.  -LogInformation % -(% & -$str& W -,W X -sqlY \ -?\ ] -.] ^ -Length^ d -??e g -$numh i -)i j -;j k -var  -rows  -=  -(  -await ! -conn" & -.& ' - -QueryAsync' 1 -(1 2 -sql2 5 -!5 6 -)6 7 -)7 8 -.8 9 -ToList9 ? -(? @ -)@ A -;A B -var    - formatted    -=    -rows   $ -.  $ %# -ToCamelCaseDictionaries  % < -(  < = -)  = > -.  > ? -ToList  ? E -(  E F -)  F G -;  G H -logger!!  -.!!  -LogInformation!! % -(!!% & -$str!!& M -,!!M N - formatted!!O X -.!!X Y -Count!!Y ^ -)!!^ _ -;!!_ ` -return""  -Results""  -.""  -Ok"" ! -(""! " - formatted""" + -)""+ , -;"", - -}##  -catch$$  -($$  - Exception$$  -ex$$  -)$$  -{%%  -logger&&  -.&&  -LogError&&  -(&&  -ex&& " -,&&" # -$str&&$ 9 -)&&9 : -;&&: ; -return''  -Results''  -.''  -Problem'' & -(''& ' -$"''' ) -$str'') 7 -{''7 8 -ex''8 : -.'': ; -Message''; B -}''B C -"''C D -)''D E -;''E F -}((  -}))  -))) - -.**  -RequireAuthorization**  -(**  - AuthPolicies** * -.*** + - RequireAdmin**+ 7 -)**7 8 -.++  - WithSummary++  -(++  -$str++ Q -)++Q R -.,,  -Produces,,  -(,,  -$num,,  -),,  -.--  -ProducesProblem--  -(--  -$num--  -)--  -;--  -group//  -.//  -MapGet//  -(//  -$str// * -,//* + -async//, 1 -(//2 3 -OdbcConnection//3 A -conn//B F -,//F G -ILoggerFactory//H V - loggerFactory//W d -)//d e -=>//f h -{00  -var11  -logger11  -=11  - loggerFactory11 & -.11& ' - CreateLogger11' 3 -(113 4 -$str114 L -)11L M -;11M N -try22  -{33  -await44  -conn44  -.44  - OpenAsync44 $ -(44$ % -)44% & -;44& ' -const55  -string55  -sqlQuery55 % -=55& ' -$str55( x -;55x y -var66  -schemas66  -=66  -(66  -await66 $ -conn66% ) -.66) * - -QueryAsync66* 4 -(664 5 -sqlQuery665 = -)66= > -)66> ? -.66? @ -ToList66@ F -(66F G -)66G H -;66H I -var77  - formatted77  -=77  -schemas77 ' -.77' (# -ToCamelCaseDictionaries77( ? -(77? @ -)77@ A -.77A B -ToList77B H -(77H I -)77I J -;77J K -logger88  -.88  -LogInformation88 % -(88% & -$str88& F -,88F G - formatted88H Q -.88Q R -Count88R W -)88W X -;88X Y -return99  -Results99  -.99  -Ok99 ! -(99! " - formatted99" + -)99+ , -;99, - -}::  -catch;;  -(;;  - Exception;;  -ex;;  -);;  -{<<  -logger==  -.==  -LogError==  -(==  -ex== " -,==" # -$str==$ C -)==C D -;==D E -return>>  -Results>>  -.>>  -Problem>> & -(>>& ' -$">>' ) -$str>>) A -{>>A B -ex>>B D -.>>D E -Message>>E L -}>>L M -">>M N -)>>N O -;>>O P -}??  -}@@  -)@@ - -.AA  -RequireAuthorizationAA  -(AA  - AuthPoliciesAA * -.AA* + -RequireOperatorAA+ : -)AA: ; -.BB  - WithSummaryBB  -(BB  -$strBB K -)BBK L -;BBL M -groupDD  -.DD  -MapGetDD  -(DD  -$strDD ' -,DD' ( -asyncDD) . -(DD/ 0 -stringDD0 6 - libraryNameDD7 B -,DDB C -OdbcConnectionDDD R -connDDS W -,DDW X -ILoggerFactoryDDY g - loggerFactoryDDh u -)DDu v -=>DDw y -{EE  -varFF  -loggerFF  -=FF  - loggerFactoryFF & -.FF& ' - CreateLoggerFF' 3 -(FF3 4 -$strFF4 I -)FFI J -;FFJ K -tryGG  -{HH  -awaitII  -connII  -.II  - OpenAsyncII $ -(II$ % -)II% & -;II& ' -ifJJ  -(JJ  -stringJJ  -.JJ  -IsNullOrWhiteSpaceJJ - -(JJ- . - libraryNameJJ. 9 -)JJ9 : -)JJ: ; -{KK  -loggerLL  -.LL  - -LogWarningLL % -(LL% & -$strLL& _ -)LL_ ` -;LL` a -returnMM  -ResultsMM " -.MM" # - -BadRequestMM# - -(MM- . -newMM. 1 -{MM2 3 -errorMM4 9 -=MM: ; -$strMM< h -}MMi j -)MMj k -;MMk l -}NN  -constPP  -stringPP  -sqlQueryPP % -=PP& ' -$strPU(  -;UU  -varWW  -tablesWW  -=WW  -(WW  -awaitWW # -connWW$ ( -.WW( ) - -QueryAsyncWW) 3 -(WW3 4 -sqlQueryWW4 < -,WW< = -newWW> A -{WWB C - libraryNameWWD O -}WWP Q -)WWQ R -)WWR S -.WWS T -ToListWWT Z -(WWZ [ -)WW[ \ -;WW\ ] -loggerXX  -.XX  -LogInformationXX % -(XX% & -$strXX& [ -,XX[ \ -tablesXX] c -.XXc d -CountXXd i -,XXi j - libraryNameXXk v -)XXv w -;XXw x -varYY  - formattedYY  -=YY  -tablesYY & -.YY& '# -ToCamelCaseDictionariesYY' > -(YY> ? -)YY? @ -.YY@ A -ToListYYA G -(YYG H -)YYH I -;YYI J -returnZZ  -ResultsZZ  -.ZZ  -OkZZ ! -(ZZ! " - formattedZZ" + -)ZZ+ , -;ZZ, - -}[[  -catch\\  -(\\  - Exception\\  -ex\\  -)\\  -{]]  -logger^^  -.^^  -LogError^^  -(^^  -ex^^ " -,^^" # -$str^^$ X -,^^X Y - libraryName^^Z e -)^^e f -;^^f g -return__  -Results__  -.__  -Problem__ & -(__& ' -$"__' ) -$str__) @ -{__@ A -ex__A C -.__C D -Message__D K -}__K L -"__L M -)__M N -;__N O -}``  -}aa  -)aa - -.bb  -RequireAuthorizationbb  -(bb  - AuthPoliciesbb * -.bb* + -RequireOperatorbb+ : -)bb: ; -.cc  - WithSummarycc  -(cc  -$strcc I -)ccI J -;ccJ K -groupee  -.ee  -MapGetee  -(ee  -$stree 0 -,ee0 1 -asyncee2 7 -(ee8 9 -stringee9 ? - libraryNameee@ K -,eeK L -stringeeM S - tableNameeeT ] -,ee] ^ -OdbcConnectionee_ m -conneen r -,eer s -ILoggerFactory eet ‚ - loggerFactory -eeƒ  -) -ee ‘ -=> -ee’ ” -{ff  -vargg  -loggergg  -=gg  - loggerFactorygg & -.gg& ' - CreateLoggergg' 3 -(gg3 4 -$strgg4 Q -)ggQ R -;ggR S -tryhh  -{ii  -awaitjj  -connjj  -.jj  - OpenAsyncjj $ -(jj$ % -)jj% & -;jj& ' -ifkk  -(kk  -stringkk  -.kk  -IsNullOrWhiteSpacekk - -(kk- . - libraryNamekk. 9 -)kk9 : -||kk; = -stringkk> D -.kkD E -IsNullOrWhiteSpacekkE W -(kkW X - tableNamekkX a -)kka b -)kkb c -{ll  -loggermm  -.mm  - -LogWarningmm % -(mm% & -$strmm& x -)mmx y -;mmy z -returnnn  -Resultsnn " -.nn" # - -BadRequestnn# - -(nn- . -newnn. 1 -{nn2 3 -errornn4 9 -=nn: ; -$strnn< z -}nn{ | -)nn| } -;nn} ~ -}oo  -constqq  -stringqq  -sqlQueryqq % -=qq& ' -$strqw(  -;ww  -awaityy  -usingyy  -varyy  -commandyy ' -=yy( ) -connyy* . -.yy. / - CreateCommandyy/ < -(yy< = -)yy= > -;yy> ? -commandzz  -.zz  - CommandTextzz # -=zz$ % -sqlQueryzz& . -;zz. / -var||  -libraryParameter|| $ -=||% & -command||' . -.||. / -CreateParameter||/ > -(||> ? -)||? @ -;||@ A -libraryParameter}}  -.}} ! -Value}}! & -=}}' ( - libraryName}}) 4 -.}}4 5 -ToUpper}}5 < -(}}< = -)}}= > -;}}> ? -command~~  -.~~  - -Parameters~~ " -.~~" # -Add~~# & -(~~& ' -libraryParameter~~' 7 -)~~7 8 -;~~8 9 -var -€€  -tableParameter -€€ " -= -€€# $ -command -€€% , -. -€€, - -CreateParameter -€€- < -( -€€< = -) -€€= > -; -€€> ? -tableParameter -  -. -  -Value - $ -= -% & - tableName -' 0 -. -0 1 -ToUpper -1 8 -( -8 9 -) -9 : -; -: ; -command -‚‚  -. -‚‚  - -Parameters -‚‚ " -. -‚‚" # -Add -‚‚# & -( -‚‚& ' -tableParameter -‚‚' 5 -) -‚‚5 6 -; -‚‚6 7 -var -„„  -columns -„„  -= -„„  -new -„„ ! -List -„„" & -< -„„& ' - IDictionary -„„' 2 -< -„„2 3 -string -„„3 9 -, -„„9 : -object -„„; A -> -„„A B -> -„„B C -( -„„C D -) -„„D E -; -„„E F -await -……  -using -……  -( -……  -var -……  -reader -……! ' -= -……( ) -await -……* / -command -……0 7 -. -……7 8 -ExecuteReaderAsync -……8 J -( -……J K -) -……K L -) -……L M -{ -††  -while -‡‡  -( -‡‡  -await -‡‡  -reader -‡‡! ' -. -‡‡' ( - ReadAsync -‡‡( 1 -( -‡‡1 2 -) -‡‡2 3 -) -‡‡3 4 -{ -ˆˆ  -var -‰‰  -row -‰‰  -= -‰‰ ! -new -‰‰" % - -Dictionary -‰‰& 0 -< -‰‰0 1 -string -‰‰1 7 -, -‰‰7 8 -object -‰‰9 ? -> -‰‰? @ -( -‰‰@ A -StringComparer -‰‰A O -. -‰‰O P -OrdinalIgnoreCase -‰‰P a -) -‰‰a b -; -‰‰b c -for -ŠŠ  -( -ŠŠ  -var -ŠŠ  -i -ŠŠ! " -= -ŠŠ# $ -$num -ŠŠ% & -; -ŠŠ& ' -i -ŠŠ( ) -< -ŠŠ* + -reader -ŠŠ, 2 -. -ŠŠ2 3 - -FieldCount -ŠŠ3 = -; -ŠŠ= > -i -ŠŠ? @ -++ -ŠŠ@ B -) -ŠŠB C -{ -‹‹  -row -ŒŒ  -[ -ŒŒ  -reader -ŒŒ & -. -ŒŒ& ' -GetName -ŒŒ' . -( -ŒŒ. / -i -ŒŒ/ 0 -) -ŒŒ0 1 -] -ŒŒ1 2 -= -ŒŒ3 4 -reader -ŒŒ5 ; -. -ŒŒ; < -GetNormalizedValue -ŒŒ< N -( -ŒŒN O -i -ŒŒO P -) -ŒŒP Q -! -ŒŒQ R -; -ŒŒR S -} -  -columns -  -. -  -Add - # -( -# $ -row -$ ' -) -' ( -; -( ) -} -  -} -‘‘  -logger -––  -. -––  -LogInformation -–– % -( -––% & -$str -––& U -, -––U V -columns -––W ^ -. -––^ _ -Count -––_ d -, -––d e - libraryName -––f q -, -––q r - tableName -––s | -) -––| } -; -––} ~ -var -——  - formatted -——  -= -——  -columns -—— ' -. -——' ( -Select -——( . -( -——. / -dict -——/ 3 -=> -——4 6 -dict -——7 ; -. -——; <# -ToCamelCaseDictionary -——< Q -( -——Q R -) -——R S -) -——S T -. -——T U -ToList -——U [ -( -——[ \ -) -——\ ] -; -——] ^ -return -˜˜  -Results -˜˜  -. -˜˜  -Ok -˜˜ ! -( -˜˜! " - formatted -˜˜" + -) -˜˜+ , -; -˜˜, - -} -™™  -catch -šš  -( -šš  - Exception -šš  -ex -šš  -) -šš  -{ -››  -logger -œœ  -. -œœ  -LogError -œœ  -( -œœ  -ex -œœ " -, -œœ" # -$str -œœ$ R -, -œœR S - libraryName -œœT _ -, -œœ_ ` - tableName -œœa j -) -œœj k -; -œœk l -return -  -Results -  -. -  -Problem - & -( -& ' -$" -' ) -$str -) A -{ -A B -ex -B D -. -D E -Message -E L -} -L M -" -M N -) -N O -; -O P -} -žž  -} -ŸŸ  -) -ŸŸ - -. -¡¡  - WithSummary -¡¡  -( -¡¡  -$str -¡¡ X -) -¡¡X Y -; -¡¡Y Z -return -££  -group -££  -; -££  -} -¤¤  -}¥¥ ‹ -6/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs - namespace   -AS400API   -  -.    - Endpoints    -;    -public  -static  -class  -ORDUAGEndpoint " -{  -private  -static  -readonly  -string " -[" # -]# $ - ColumnNames% 0 -=1 2 -[  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str  -,  -$str    -,    -$str!!  -,!!  -$str""  -,""  -$str##  -,##  -$str$$  -,$$  -$str%%  -,%%  -$str&&  -,&&  -$str''  -,''  -$str((  -,((  -$str))  -,))  -$str**  -,**  -$str++  -,++  -$str,,  -,,,  -$str--  -,--  -$str..  -,..  -$str//  -,//  -$str00  -,00  -$str11  -,11  -$str22 # -,22# $ -$str33  -,33 ! -$str44  -,44  -$str55  -,55  -$str66  -,66  -$str77  -,77  -$str88  -,88  -$str99  -,99  -$str::  -,::  -$str;;  -,;;  -$str<< # -,<<# $ -$str==  -,==  -$str>>  -,>>  -$str??  -,??  -$str@@  -,@@  -$strAA  -,AA  -$strBB  -,BB  -$strCC  -,CC  -$strDD  -,DD  -$strEE  -,EE  -$strFF  -,FF  -$strGG  -,GG  -$strHH  -,HH  -$strII  -,II  -$strJJ  -,JJ  -$strKK " -,KK" # -$strLL " -,LL" # -$strMM " -,MM" # -$strNN " -,NN" # -$strOO " -,OO" # -$strPP " -,PP" # -$strQQ " -,QQ" # -$strRR " -,RR" # -$strSS " -,SS" # -$strTT # -,TT# $ -$strUU # -,UU# $ -$strVV # -,VV# $ -$strWW " -,WW" # -$strXX  -,XX  -$strYY $ -,YY$ % -$strZZ ! -,ZZ! " -$str[[ $ -,[[$ % -$str\\ ! -,\\! " -$str]] " -,]]" # -$str^^  -,^^  -$str__ ! -,__! " -$str``  -,``  -$straa ! -,aa! " -$strbb  -,bb  -$strcc  -,cc  -$strdd  -,dd  -$stree $ -,ee$ % -$strff ! -,ff! " -$strgg % -,gg% & -$strhh " -,hh" # -$strii  -,ii  -$strjj  -,jj  -$strkk  -,kk  -$strll  -,ll  -$strmm  -,mm  -$strnn  -,nn  -$stroo  -,oo  -$strpp  -,pp  -$strqq  -,qq  -$strrr  -,rr  -$strss  -,ss  -$strtt  -,tt  -$struu  -,uu  -$strvv  -,vv  -$strww  -,ww  -$strxx  -,xx  -$stryy  -,yy  -$strzz  -,zz  -$str{{  -,{{  -$str||  -,||  -$str}}  -,}} ! -$str~~  -,~~ ! -$str  -, ! -$str -€€  -, -€€ ! -$str -  -, -  -$str -‚‚  -, -‚‚  -$str -ƒƒ  -, -ƒƒ  -$str -„„  -, -„„  -$str -……  -, -……  -$str -††  -, -††  -$str -‡‡  -, -‡‡  -$str -ˆˆ  -, -ˆˆ  -$str -‰‰  -, -‰‰  -$str -ŠŠ  -, -ŠŠ  -$str -‹‹  -, -‹‹  -$str -ŒŒ  -, -ŒŒ  -$str -  -, -  -$str -ŽŽ  -, -ŽŽ  -$str -  -, -  -$str -  -, -  -$str -‘‘  -, -‘‘  -$str -’’  -, -’’  -$str -““  -, -““  -$str -””  -, -””  -$str -••  -] -––  -; -––  -private -˜˜  -static -˜˜  -readonly -˜˜  -Regex -˜˜ ! -LibraryNamePattern -˜˜" 4 -= -˜˜5 6 -new -˜˜7 : -( -˜˜: ; -$str -˜˜; I -, -˜˜I J - RegexOptions -˜˜K W -. -˜˜W X -Compiled -˜˜X ` -| -˜˜a b - RegexOptions -˜˜c o -. -˜˜o p - -IgnoreCase -˜˜p z -) -˜˜z { -; -˜˜{ | -public -šš - -static -šš  -RouteGroupBuilder -šš # -MapORDUAGEndpoints -šš$ 6 -( -šš6 7 -this -šš7 ; -RouteGroupBuilder -šš< M -group -ššN S -) -ššS T -{ -››  -group -œœ  -. -œœ  -MapGet -œœ  -( -œœ  -$str -œœ ' -, -œœ' ( -async -œœ) . -( -œœ/ 0 -[ -  - AsParameters -  -] -  - OrduagQuery - * -query -+ 0 -, -0 1 -OdbcConnection -žž  -conn -žž # -, -žž# $ -ILoggerFactory -ŸŸ  - loggerFactory -ŸŸ , -) -ŸŸ, - -=> -ŸŸ. 0 -{ -    -var -¡¡  -logger -¡¡  -= -¡¡  - loggerFactory -¡¡ * -. -¡¡* + - CreateLogger -¡¡+ 7 -( -¡¡7 8 -$str -¡¡8 H -) -¡¡H I -; -¡¡I J -try -¢¢  -{ -££  -await -¤¤  -conn -¤¤  -. -¤¤  - OpenAsync -¤¤ ( -( -¤¤( ) -) -¤¤) * -; -¤¤* + -var -¦¦  -page -¦¦  -= -¦¦  -query -¦¦ $ -. -¦¦$ % -Page -¦¦% ) -. -¦¦) * -GetValueOrDefault -¦¦* ; -( -¦¦; < -$num -¦¦< = -) -¦¦= > -; -¦¦> ? -if -§§  -( -§§  -page -§§  -< -§§  -$num -§§  -) -§§ ! -{ -¨¨  -logger -©©  -. -©©  - -LogWarning -©© ) -( -©©) * -$str -©©* V -, -©©V W -query -©©X ] -. -©©] ^ -Page -©©^ b -) -©©b c -; -©©c d -page -ªª  -= -ªª  -$num -ªª  -; -ªª ! -} -««  -var -­­  -pageSize -­­  -= -­­! " -query -­­# ( -. -­­( ) -PageSize -­­) 1 -. -­­1 2 -GetValueOrDefault -­­2 C -( -­­C D -$num -­­D F -) -­­F G -; -­­G H -pageSize -®®  -= -®®  -Math -®® # -. -®®# $ -Clamp -®®$ ) -( -®®) * -pageSize -®®* 2 -, -®®2 3 -$num -®®4 5 -, -®®5 6 -$num -®®7 : -) -®®: ; -; -®®; < -var -°°  - -offsetLong -°° " -= -°°# $ -( -°°% & -long -°°& * -) -°°* + -( -°°+ , -page -°°, 0 -- -°°1 2 -$num -°°3 4 -) -°°4 5 -* -°°6 7 -pageSize -°°8 @ -; -°°@ A -if -±±  -( -±±  - -offsetLong -±± " -> -±±# $ -int -±±% ( -. -±±( ) -MaxValue -±±) 1 -) -±±1 2 -{ -²²  -return -³³  -Results -³³ & -. -³³& ' - -BadRequest -³³' 1 -( -³³1 2 -new -³³2 5 -{ -³³6 7 -error -³³8 = -= -³³> ? -$str -³³@ ^ -} -³³_ ` -) -³³` a -; -³³a b -} -´´  -var -¶¶  -offset -¶¶  -= -¶¶  -( -¶¶! " -int -¶¶" % -) -¶¶% & - -offsetLong -¶¶& 0 -; -¶¶0 1 -var -¸¸  - -sqlBuilder -¸¸ " -= -¸¸# $ -new -¸¸% ( - StringBuilder -¸¸) 6 -( -¸¸6 7 -) -¸¸7 8 -; -¸¸8 9 - -sqlBuilder -¹¹  -. -¹¹  - -AppendLine -¹¹ ) -( -¹¹) * -$str -¹¹* 2 -) -¹¹2 3 -; -¹¹3 4 - -sqlBuilder -ºº  -. -ºº  - -AppendLine -ºº ) -( -ºº) * -string -ºº* 0 -. -ºº0 1 -Join -ºº1 5 -( -ºº5 6 -$str -ºº6 ; -, -ºº; < - ColumnNames -ºº= H -. -ººH I -Select -ººI O -( -ººO P -column -ººP V -=> -ººW Y -$" -ººZ \ -$str -ºº\ ` -{ -ºº` a -column -ººa g -} -ººg h -" -ººh i -) -ººi j -) -ººj k -) -ººk l -; -ººl m - -sqlBuilder -»»  -. -»»  - -AppendLine -»» ) -( -»») * -$str -»»* ? -) -»»? @ -; -»»@ A - -sqlBuilder -¼¼  -. -¼¼  - -AppendLine -¼¼ ) -( -¼¼) * -$str -¼¼* 7 -) -¼¼7 8 -; -¼¼8 9 -var -¾¾  -parameterValues -¾¾ ' -= -¾¾( ) -new -¾¾* - -List -¾¾. 2 -< -¾¾2 3 -object -¾¾3 9 -? -¾¾9 : -> -¾¾: ; -( -¾¾; < -) -¾¾< = -; -¾¾= > -if -ÀÀ  -( -ÀÀ  -! -ÀÀ  -string -ÀÀ  -. -ÀÀ  -IsNullOrWhiteSpace -ÀÀ 2 -( -ÀÀ2 3 -query -ÀÀ3 8 -. -ÀÀ8 9 - -CodeNumber -ÀÀ9 C -) -ÀÀC D -) -ÀÀD E -{ -ÁÁ  - -sqlBuilder - " -. -ÂÂ" # - -AppendLine -ÂÂ# - -( -ÂÂ- . -$str -ÂÂ. H -) -ÂÂH I -; -ÂÂI J -parameterValues -Ãà ' -. -ÃÃ' ( -Add -ÃÃ( + -( -ÃÃ+ , -query -ÃÃ, 1 -. -ÃÃ1 2 - -CodeNumber -ÃÃ2 < -. -ÃÃ< = -Trim -ÃÃ= A -( -ÃÃA B -) -ÃÃB C -) -ÃÃC D -; -ÃÃD E -} -ÄÄ  -if -ÆÆ  -( -ÆÆ  -! -ÆÆ  -string -ÆÆ  -. -ÆÆ  -IsNullOrWhiteSpace -ÆÆ 2 -( -ÆÆ2 3 -query -ÆÆ3 8 -. -ÆÆ8 9 - AgentAgency -ÆÆ9 D -) -ÆÆD E -) -ÆÆE F -{ -ÇÇ  - -sqlBuilder -ÈÈ " -. -ÈÈ" # - -AppendLine -ÈÈ# - -( -ÈÈ- . -$str -ÈÈ. F -) -ÈÈF G -; -ÈÈG H -parameterValues -ÉÉ ' -. -ÉÉ' ( -Add -ÉÉ( + -( -ÉÉ+ , -query -ÉÉ, 1 -. -ÉÉ1 2 - AgentAgency -ÉÉ2 = -. -ÉÉ= > -Trim -ÉÉ> B -( -ÉÉB C -) -ÉÉC D -) -ÉÉD E -; -ÉÉE F -} -ÊÊ  -if -ÌÌ  -( -ÌÌ  -! -ÌÌ  -string -ÌÌ  -. -ÌÌ  -IsNullOrWhiteSpace -ÌÌ 2 -( -ÌÌ2 3 -query -ÌÌ3 8 -. -ÌÌ8 9 - AgentStat -ÌÌ9 B -) -ÌÌB C -) -ÌÌC D -{ -ÍÍ  - -sqlBuilder -ÎÎ " -. -ÎÎ" # - -AppendLine -ÎÎ# - -( -ÎÎ- . -$str -ÎÎ. D -) -ÎÎD E -; -ÎÎE F -parameterValues -ÏÏ ' -. -ÏÏ' ( -Add -ÏÏ( + -( -ÏÏ+ , -query -ÏÏ, 1 -. -ÏÏ1 2 - AgentStat -ÏÏ2 ; -. -ÏÏ; < -Trim -ÏÏ< @ -( -ÏÏ@ A -) -ÏÏA B -) -ÏÏB C -; -ÏÏC D -} -ÐÐ  - -sqlBuilder -ÒÒ  -. -ÒÒ  - -AppendLine -ÒÒ ) -( -ÒÒ) * -$str -ÒÒ* C -) -ÒÒC D -; -ÒÒD E - -sqlBuilder -ÓÓ  -. -ÓÓ  - -AppendLine -ÓÓ ) -( -ÓÓ) * -$str -ÓÓ* P -) -ÓÓP Q -; -ÓÓQ R -parameterValues -ÕÕ # -. -ÕÕ# $ -Add -ÕÕ$ ' -( -ÕÕ' ( -offset -ÕÕ( . -) -ÕÕ. / -; -ÕÕ/ 0 -parameterValues -ÖÖ # -. -ÖÖ# $ -Add -ÖÖ$ ' -( -ÖÖ' ( -pageSize -ÖÖ( 0 -) -ÖÖ0 1 -; -ÖÖ1 2 -await -ØØ  -using -ØØ  -var -ØØ # -command -ØØ$ + -= -ØØ, - -conn -ØØ. 2 -. -ØØ2 3 - CreateCommand -ØØ3 @ -( -ØØ@ A -) -ØØA B -; -ØØB C -command -ÙÙ  -. -ÙÙ  - CommandText -ÙÙ ' -= -ÙÙ( ) - -sqlBuilder -ÙÙ* 4 -. -ÙÙ4 5 -ToString -ÙÙ5 = -( -ÙÙ= > -) -ÙÙ> ? -; -ÙÙ? @ -foreach -ÛÛ  -( -ÛÛ  -var -ÛÛ  -value -ÛÛ! & -in -ÛÛ' ) -parameterValues -ÛÛ* 9 -) -ÛÛ9 : -{ -ÜÜ  -var -ÝÝ  - parameter -ÝÝ % -= -ÝÝ& ' -command -ÝÝ( / -. -ÝÝ/ 0 -CreateParameter -ÝÝ0 ? -( -ÝÝ? @ -) -ÝÝ@ A -; -ÝÝA B - parameter -ÞÞ ! -. -ÞÞ! " -Value -ÞÞ" ' -= -ÞÞ( ) -value -ÞÞ* / -; -ÞÞ/ 0 -command -ßß  -. -ßß  - -Parameters -ßß * -. -ßß* + -Add -ßß+ . -( -ßß. / - parameter -ßß/ 8 -) -ßß8 9 -; -ßß9 : -} -àà  -var -ââ  -rows -ââ  -= -ââ  -new -ââ " -List -ââ# ' -< -ââ' ( - IDictionary -ââ( 3 -< -ââ3 4 -string -ââ4 : -, -ââ: ; -object -ââ< B -> -ââB C -> -ââC D -( -ââD E -) -ââE F -; -ââF G -await -ãã  -using -ãã  -( -ãã ! -var -ãã! $ -reader -ãã% + -= -ãã, - -await -ãã. 3 -command -ãã4 ; -. -ãã; < -ExecuteReaderAsync -ãã< N -( -ããN O -) -ããO P -) -ããP Q -{ -ää  -while -åå  -( -åå  -await -åå $ -reader -åå% + -. -åå+ , - ReadAsync -åå, 5 -( -åå5 6 -) -åå6 7 -) -åå7 8 -{ -ææ  -var -çç  -row -çç # -= -çç$ % -new -çç& ) - -Dictionary -çç* 4 -< -çç4 5 -string -çç5 ; -, -çç; < -object -çç= C -> -ççC D -( -ççD E -StringComparer -ççE S -. -ççS T -OrdinalIgnoreCase -ççT e -) -ççe f -; -ççf g -for -èè  -( -èè ! -var -èè! $ -i -èè% & -= -èè' ( -$num -èè) * -; -èè* + -i -èè, - -< -èè. / -reader -èè0 6 -. -èè6 7 - -FieldCount -èè7 A -; -èèA B -i -èèC D -++ -èèD F -) -èèF G -{ -éé  -var -êê # -value -êê$ ) -= -êê* + -reader -êê, 2 -. -êê2 3 -GetNormalizedValue -êê3 E -( -êêE F -i -êêF G -) -êêG H -; -êêH I -row -ëë # -[ -ëë# $ -reader -ëë$ * -. -ëë* + -GetName -ëë+ 2 -( -ëë2 3 -i -ëë3 4 -) -ëë4 5 -] -ëë5 6 -= -ëë7 8 -value -ëë9 > -! -ëë> ? -; -ëë? @ -} -ìì  -rows -îî  -. -îî ! -Add -îî! $ -( -îî$ % -row -îî% ( -) -îî( ) -; -îî) * -} -ïï  -} -ðð  -logger -òò  -. -òò  -LogInformation -òò ) -( -òò) * -$str óó ž -, óóž Ÿ -rows -ôô  -. -ôô  -Count -ôô " -, -ôô" # -query -õõ  -. -õõ  - -CodeNumber -õõ ( -, -õõ( ) -query -öö  -. -öö  - AgentAgency -öö ) -, -öö) * -query -÷÷  -. -÷÷  - AgentStat -÷÷ ' -, -÷÷' ( -page -øø  -, -øø  -pageSize -ùù  -) -ùù ! -; -ùù! " -var -ûû  - formatted -ûû ! -= -ûû" # -rows -ûû$ ( -. -ûû( ) -Select -ûû) / -( -ûû/ 0 -dict -ûû0 4 -=> -ûû5 7 -dict -ûû8 < -. -ûû< =# -ToCamelCaseDictionary -ûû= R -( -ûûR S -) -ûûS T -) -ûûT U -. -ûûU V -ToList -ûûV \ -( -ûû\ ] -) -ûû] ^ -; -ûû^ _ -return -üü  -Results -üü " -. -üü" # -Ok -üü# % -( -üü% & - formatted -üü& / -) -üü/ 0 -; -üü0 1 -} -ýý  -catch -þþ  -( -þþ  - Exception -þþ  -ex -þþ! # -) -þþ# $ -{ -ÿÿ  -logger -€€  -. -€€  -LogError -€€ # -( -€€# $ -ex -€€$ & -, -€€& ' -$str -€€( Q -) -€€Q R -; -€€R S -return -  -Results - " -. -" # -Problem -# * -( -* + -$" -+ - -$str -- D -{ -D E -ex -E G -. -G H -Message -H O -} -O P -" -P Q -) -Q R -; -R S -} -‚‚  -} -ƒƒ  -) -ƒƒ  -. -……  - WithSummary -……  -( -……  -$str -…… M -) -……M N -; -……N O -return -‡‡  -group -‡‡  -; -‡‡  -} -ˆˆ  -public -ŠŠ - -sealed -ŠŠ  -class -ŠŠ  - OrduagQuery -ŠŠ # -{ -‹‹  -public -ŒŒ  -string -ŒŒ  -? -ŒŒ  - -CodeNumber -ŒŒ ! -{ -ŒŒ" # -get -ŒŒ$ ' -; -ŒŒ' ( -init -ŒŒ) - -; -ŒŒ- . -} -ŒŒ/ 0 -public -ŽŽ  -string -ŽŽ  -? -ŽŽ  - AgentAgency -ŽŽ " -{ -ŽŽ# $ -get -ŽŽ% ( -; -ŽŽ( ) -init -ŽŽ* . -; -ŽŽ. / -} -ŽŽ0 1 -public -  -string -  -? -  - AgentStat -  -{ -! " -get -# & -; -& ' -init -( , -; -, - -} -. / -public -’’  -int -’’  -? -’’  -Page -’’  -{ -’’  -get -’’  -; -’’  -init -’’ $ -; -’’$ % -} -’’& ' -public -””  -int -””  -? -””  -PageSize -””  -{ -””  -get -”” " -; -””" # -init -””$ ( -; -””( ) -} -””* + -} -••  -}–– Ö( -//workspaces/AS400API/Endpoints/AuthEndpoints.cs - namespace   -AS400API   -  -.    - Endpoints    -;    -public   -static    -class    - AuthEndpoints   ! -{   -public   - -static    -RouteGroupBuilder   # -MapAuthEndpoints  $ 4 -(  4 5 -this  5 9 -RouteGroupBuilder  : K -group  L Q -)  Q R -{  -group  -.  -MapPost  -(  -$str & -,& ' -async( - -Task. 2 -<2 3 -IResult3 : ->: ; -(< = - LoginRequest= I -requestJ Q -,Q R - DemoUserStoreS ` - userStorea j -,j k - TokenServicel x - tokenService y … -, -… † - -JwtOptions -‡ ‘ - -jwtOptions -’ œ -) -œ  -=> -ž   -{  -if  -(  -request  -is  -null  -|| " -string# ) -.) * -IsNullOrWhiteSpace* < -(< = -request= D -.D E -UsernameE M -)M N -||O Q -stringR X -.X Y -IsNullOrWhiteSpaceY k -(k l -requestl s -.s t -Passwordt | -)| } -)} ~ -{  -return  -Results  -.  - -BadRequest ) -() * -new* - -{. / -error0 5 -=6 7 -$str8 ] -}^ _ -)_ ` -;` a -}  -var  -user  -=  -await  - userStore & -.& ' -FindByNameAsync' 6 -(6 7 -request7 > -.> ? -Username? G -)G H -;H I -if  -(  -user  -is  -null  -||  -! ! - userStore! * -.* + -ValidateCredentials+ > -(> ? -user? C -,C D -requestE L -.L M -PasswordM U -)U V -)V W -{  -return  -Results  -.  - Unauthorized + -(+ , -), - -;- . -}  -var  - accessToken  -=  - tokenService * -.* + - CreateToken+ 6 -(6 7 -user7 ; -); < -;< = -return  -Results  -.  -Ok  -(  -new ! - LoginResponse" / -(/ 0 - accessToken0 ; -,; < - -jwtOptions= G -.G H& -AccessTokenLifetimeMinutesH b -*c d -$nume g -,g h -$stri q -,q r -users w -.w x -Rolesx } -)} ~ -)~  -;  € -}  -) - -.  -AllowAnonymous  -(  -)  -.    - WithSummary    -(    -$str   B -)  B C -.!!  -Produces!!  -<!!  - LoginResponse!!  ->!!  -(!! ! - StatusCodes!!! , -.!!, - - Status200OK!!- 8 -)!!8 9 -.""  -Produces""  -(""  - StatusCodes""  -.""  -Status400BadRequest"" 1 -)""1 2 -.##  -Produces##  -(##  - StatusCodes##  -.## ! -Status401Unauthorized## 3 -)##3 4 -;##4 5 -group%%  -.%%  -MapGet%%  -(%%  -$str%% # -,%%# $ -(%%% & -ClaimsPrincipal%%& 5 -user%%6 : -)%%: ; -=>%%< > -{&&  -var''  -username''  -=''  -user''  -.''  -Identity'' ( -?''( ) -.'') * -Name''* . -??''/ 1 -user''2 6 -.''6 7 -FindFirstValue''7 E -(''E F# -JwtRegisteredClaimNames''F ] -.''] ^ -Sub''^ a -)''a b -??''c e -$str''f o -;''o p -var((  -roles((  -=((  -user((  -.((  -FindAll(( $ -((($ % - -ClaimTypes((% / -.((/ 0 -Role((0 4 -)((4 5 -.((5 6 -Select((6 < -(((< = -r((= > -=>((? A -r((B C -.((C D -Value((D I -)((I J -.((J K -ToArray((K R -(((R S -)((S T -;((T U -return))  -Results))  -.))  -Ok))  -())  -new)) ! -{))" # -username))$ , -,)), - -roles)). 3 -}))4 5 -)))5 6 -;))6 7 -}**  -)** - -.++  -RequireAuthorization++  -(++  -)++  -.,,  - WithSummary,,  -(,,  -$str,, O -),,O P -;,,P Q -return..  -group..  -;..  -}//  -}00 ¦ -1/workspaces/AS400API/Endpoints/SystemEndpoints.cs - namespace  -AS400API -  -.  - Endpoints  -;  -public   -static    -class    -SystemEndpoints   # -{ - -  -public   - -static   ! -IEndpointRouteBuilder   ' -MapRootEndpoints  ( 8 -(  8 9 -this  9 =! -IEndpointRouteBuilder  > S -app  T W -)  W X -{    -app    -.    -MapGet    -(    -$str    -,    -(    -)    -=>    -Results   % -.  % & -Ok  & ( -(  ( ) -new  ) , -{  - . -name  / 3 -=  4 5 -$str  6 @ -,  @ A -status  B H -=  I J -$str  K O -}  P Q -)  Q R -)  R S -;  S T -return  -app  -;  -}  -public - -static  -RouteGroupBuilder # -MapSystemEndpoints$ 6 -(6 7 -this7 ; -RouteGroupBuilder< M -groupN S -)S T -{  -group  -.  -MapGet  -(  -$str ! -,! " -async# ( -() * -OdbcConnection* 8 -conn9 = -)= > -=>? A -{  -try  -{  -await  -conn  -.  - OpenAsync $ -($ % -)% & -;& ' -using  -var  -cmd  -=  -conn $ -.$ % - CreateCommand% 2 -(2 3 -)3 4 -;4 5 -cmd  -.  - CommandText  -= ! -$str" Y -;Y Z -using  -var  -reader  -=! " -await# ( -cmd) , -., - -ExecuteReaderAsync- ? -(? @ -)@ A -;A B -if  -(  -await  -reader  -. ! - ReadAsync! * -(* + -)+ , -), - -{  -var  -d  -=  -reader " -." # - GetDateTime# . -(. / -$num/ 0 -)0 1 -;1 2 -return  -Results " -." # -Ok# % -(% & -new& ) -{* + -AS400, 1 -=2 3 -$str4 < -,< = -currentDateOnAS400> P -=Q R -dS T -.T U -ToStringU ] -(] ^ -$str^ j -)j k -,k l - timestampm v -=w x -DateTime y  -. - ‚ -UtcNow -‚ ˆ -} -‰ Š -) -Š ‹ -; -‹ Œ -}  -return!!  -Results!!  -.!!  -Ok!! ! -(!!! " -new!!" % -{!!& ' -AS400!!( - -=!!. / -$str!!0 8 -,!!8 9 -note!!: > -=!!? @ -$str!!A J -}!!K L -)!!L M -;!!M N -}""  -catch##  -(##  - Exception##  -ex##  -)##  -{$$  -return%%  -Results%%  -.%%  -Problem%% & -(%%& ' -$"%%' ) -$str%%) B -{%%B C -ex%%C E -.%%E F -Message%%F M -}%%M N -"%%N O -)%%O P -;%%P Q -}&&  -}''  -)'' - -.'' -  -AllowAnonymous''  -(''  -)''  -;''  -return))  -group))  -;))  -}**  -}++ 6 -;/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs - namespace  -AS400API -  -.  -Infrastructure ! -;! " -public  -static  -class  -DatabaseRowFormatter ( -{   -public - - - -static - -  - IEnumerable - -  -< - -  - IDictionary - - ) -< - -) * -string - -* 0 -, - -0 1 -object - -2 8 -? - -8 9 -> - -9 : -> - -: ;# -ToCamelCaseDictionaries - -< S -( - -S T -this - -T X - IEnumerable - -Y d -< - -d e -dynamic - -e l -> - -l m -rows - -n r -) - -r s -{    -foreach    -(    -var    -row    -in    -rows    -)   ! -{    -if  -(  -row  -is  - IDictionary " -<" # -string# ) -,) * -object+ 1 ->1 2 -dict3 7 -)7 8 -{  -yield  -return  -dict ! -.! "! -ToCamelCaseDictionary" 7 -(7 8 -)8 9 -;9 : -}  -else  -{  -yield  -return  -new  - -Dictionary! + -<+ , -string, 2 -,2 3 -object4 : -?: ; ->; < -{  -[  -$str  -]  -=  -row # -}  -;  -}  -}  -}  -public - -static  - IDictionary  -<  -string $ -,$ % -object& , -?, - ->- .! -ToCamelCaseDictionary/ D -(D E -thisE I - IDictionaryJ U -<U V -stringV \ -,\ ] -object^ d ->d e -sourcef l -)l m -{  -var  -result  -=  -new  - -Dictionary # -<# $ -string$ * -,* + -object, 2 -?2 3 ->3 4 -(4 5 -StringComparer5 C -.C D -OrdinalIgnoreCaseD U -)U V -;V W -foreach  -(  -var  -kvp  -in  -source " -)" # -{    -var!!  -key!!  -=!!  -string!!  -.!!  -IsNullOrWhiteSpace!! / -(!!/ 0 -kvp!!0 3 -.!!3 4 -Key!!4 7 -)!!7 8 -?!!9 : -kvp!!; > -.!!> ? -Key!!? B -:!!C D - ToCamelCase!!E P -(!!P Q -kvp!!Q T -.!!T U -Key!!U X -)!!X Y -;!!Y Z -result""  -[""  -key""  -]""  -=""  -kvp""  -.""  -Value"" # -;""# $ -}##  -return%%  -result%%  -;%%  -}&&  -private((  -static((  -string((  - ToCamelCase(( % -(((% & -string((& , -input((- 2 -)((2 3 -{))  -if** - -(**  -string**  -.**  - IsNullOrEmpty**  -(** ! -input**! & -)**& ' -)**' ( -{++  -return,,  -input,,  -;,,  -}--  -var//  -segments//  -=//  -input//  -.00  -Split00  -(00  -new00  -[00  -]00  -{00  -$char00  -,00  -$char00 # -,00# $ -$char00% ( -}00) * -,00* + -StringSplitOptions00, > -.00> ? -RemoveEmptyEntries00? Q -)00Q R -.11  -Select11  -(11  -s11  -=>11  -s11  -.11  -ToLowerInvariant11 + -(11+ , -)11, - -)11- . -.22  -ToArray22  -(22  -)22  -;22  -if44 - -(44  -segments44  -.44  -Length44  -==44  -$num44  -)44 ! -{55  -return66  -input66  -;66  -}77  -if99 - -(99  -segments99  -.99  -Length99  -==99  -$num99  -)99 ! -{::  -var;;  -segment;;  -=;;  -segments;; " -[;;" # -$num;;# $ -];;$ % -;;;% & -if<<  -(<<  -segment<<  -.<<  -Length<<  -==<< ! -$num<<" # -)<<# $ -{==  -return>>  -segment>>  -.>>  -ToLowerInvariant>> / -(>>/ 0 -)>>0 1 -;>>1 2 -}??  -returnAA  -charAA  -.AA  -ToLowerInvariantAA ( -(AA( ) -segmentAA) 0 -[AA0 1 -$numAA1 2 -]AA2 3 -)AA3 4 -+AA5 6 -segmentAA7 > -[AA> ? -$numAA? @ -..AA@ B -]AAB C -;AAC D -}BB  -varDD  -sbDD  -=DD  -newDD  - StringBuilderDD " -(DD" # -)DD# $ -;DD$ % -sbEE - -.EE -  -AppendEE  -(EE  -segmentsEE  -[EE  -$numEE  -]EE  -)EE  -;EE  -forFF  -(FF  -varFF  -iFF  -=FF  -$numFF  -;FF  -iFF  -<FF  -segmentsFF $ -.FF$ % -LengthFF% + -;FF+ , -iFF- . -++FF. 0 -)FF0 1 -{GG  -varHH  -segmentHH  -=HH  -segmentsHH " -[HH" # -iHH# $ -]HH$ % -;HH% & -ifII  -(II  -segmentII  -.II  -LengthII  -==II ! -$numII" # -)II# $ -{JJ  -continueKK  -;KK  -}LL  -sbNN  -.NN  -AppendNN  -(NN  -charNN  -.NN  -ToUpperInvariantNN + -(NN+ , -segmentNN, 3 -[NN3 4 -$numNN4 5 -]NN5 6 -)NN6 7 -)NN7 8 -;NN8 9 -ifOO  -(OO  -segmentOO  -.OO  -LengthOO  ->OO  -$numOO! " -)OO" # -{PP  -sbQQ  -.QQ  -AppendQQ  -(QQ  -segmentQQ ! -[QQ! " -$numQQ" # -..QQ# % -]QQ% & -)QQ& ' -;QQ' ( -}RR  -}SS  -returnUU  -sbUU  -.UU  -ToStringUU  -(UU  -)UU  -;UU  -}VV  -}WW ¾ -;/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs - namespace  -AS400API -  -.  -Infrastructure ! -;! " -public  -static  -class  -DataReaderExtensions ( -{  -public - -static  -object  -?  -GetNormalizedValue , -(, - -this- 1 - DbDataReader2 > -reader? E -,E F -intG J -ordinalK R -)R S -{    -if - - - -( - -  -reader - -  -. - -  -IsDBNull - -  -( - -  -ordinal - - # -) - -# $ -) - -$ % -{    -return    -null    -;    -}    -var  -value  -=  -reader  -.  -GetValue # -(# $ -ordinal$ + -)+ , -;, - -if - -(  -value  -is  -string  - stringValue ' -)' ( -{  -var  - dataTypeName  -=  -reader % -.% & -GetDataTypeName& 5 -(5 6 -ordinal6 = -)= > -?> ? -.? @ -Trim@ D -(D E -)E F -;F G -if  -(  -!  -string  -.  - IsNullOrEmpty % -(% & - dataTypeName& 2 -)2 3 -&&  - dataTypeName  -.  - -StartsWith * -(* + -$str+ 1 -,1 2 -StringComparison3 C -.C D -OrdinalIgnoreCaseD U -)U V -&&  -!  - dataTypeName  -. ! -Contains! ) -() * -$str* 3 -,3 4 -StringComparison5 E -.E F -OrdinalIgnoreCaseF W -)W X -)X Y -{  -return  - stringValue " -." # -TrimEnd# * -(* + -)+ , -;, - -}  -}  -return  -value  -;  -}  -} ÁZ -/workspaces/AS400API/Program.cs -var   - builderArgs    -=    -args    -??    -Array    -.    -Empty   % -<  % & -string  & , ->  , - -(  - . -)  . / -;  / 0 -var   -builder    -=    -WebApplication    -.    - CreateBuilder   * -(  * + - builderArgs  + 6 -)  6 7 -;  7 8 -builder  -.  -Host  -.  - -UseSerilog  -(  -(  -context  -, ! -services" * -,* + -loggerConfiguration, ? -)? @ -=>A C -{  -loggerConfiguration  -.  -ReadFrom  -.  - Configuration  -(  -context ' -.' ( - Configuration( 5 -)5 6 -.  -Enrich  -.  -FromLogContext  -(  -)  -; ! -}  -)  -;  -var  -odbc  -= - -new  - OdbcOptions  -(  -)  -;  -builder  -.  - Configuration  -.  - -GetSection  -( ! -$str! ' -)' ( -.( ) -Bind) - -(- . -odbc. 2 -)2 3 -;3 4 -odbc  -.  -System  -??=  - Environment  -. " -GetEnvironmentVariable 2 -(2 3 -$str3 A -)A B -;B C -odbc  -.  -DefaultLibraries  -??=  - Environment % -.% &" -GetEnvironmentVariable& < -(< = -$str= V -)V W -;W X -odbc  -.  -User  -??= -  - Environment  -. " -GetEnvironmentVariable 0 -(0 1 -$str1 = -)= > -;> ? -odbc   -.    -Password    -??=    - Environment    -.   " -GetEnvironmentVariable   4 -(  4 5 -$str  5 E -)  E F -;  F G -odbc!!  -.!!  -Naming!!  -??=!!  - Environment!!  -.!! " -GetEnvironmentVariable!! 2 -(!!2 3 -$str!!3 A -)!!A B -??!!C E -$str!!F I -;!!I J -if##  -(##  -string## - -.## -  -IsNullOrWhiteSpace##  -(##  -odbc## " -.##" # -System### ) -)##) * -||##+ - -string$$ - -.$$ -  -IsNullOrWhiteSpace$$  -($$  -odbc$$ " -.$$" # -User$$# ' -)$$' ( -||$$) + -string%% - -.%% -  -IsNullOrWhiteSpace%%  -(%%  -odbc%% " -.%%" # -Password%%# + -)%%+ , -)%%, - -{&&  -Console''  -.''  - WriteLine''  -(''  -$str'' o -)''o p -;''p q -}((  -var++  - -jwtOptions++  -=++  -builder++  -.++  - Configuration++ & -.++& ' - -GetSection++' 1 -(++1 2 - -JwtOptions++2 < -.++< = - SectionName++= H -)++H I -.++I J -Get++J M -<++M N - -JwtOptions++N X ->++X Y -(++Y Z -)++Z [ -??++\ ^ -new++_ b - -JwtOptions++c m -(++m n -)++n o -;++o p - -jwtOptions,, - -.,, -  - EnsureIsValid,,  -(,,  -),,  -;,,  -var--  - -signingKey--  -=--  -new--  -SymmetricSecurityKey-- ) -(--) * -Encoding--* 2 -.--2 3 -UTF8--3 7 -.--7 8 -GetBytes--8 @ -(--@ A - -jwtOptions--A K -.--K L -Key--L O -)--O P -)--P Q -;--Q R -builder//  -.//  -Services//  -.// # -AddEndpointsApiExplorer// ( -(//( ) -)//) * -;//* + -builder00  -.00  -Services00  -.00  - AddSwaggerGen00  -(00  -options00 & -=>00' ) -{11  -options22  -.22  - -SwaggerDoc22  -(22  -$str22  -,22  -new22  - OpenApiInfo22! , -{33  -Title44  -=44  -$str44  -,44  -Version55  -=55  -$str55  -}66  -)66  -;66  -var88  -securityScheme88  -=88  -new88 ! -OpenApiSecurityScheme88 2 -{99  -Name::  -=::  -$str::  -,::  - Description;;  -=;;  -$str;; I -,;;I J -In<< - -=<<  -ParameterLocation<<  -.<<  -Header<< % -,<<% & -Type==  -===  -SecuritySchemeType== ! -.==! " -Http==" & -,==& ' -Scheme>>  -=>>  -$str>>  -,>>  - BearerFormat??  -=??  -$str??  -,??  - Reference@@  -=@@  -new@@  -OpenApiReference@@ ( -{AA  -TypeBB  -=BB  - ReferenceTypeBB  -.BB ! -SecuritySchemeBB! / -,BB/ 0 -IdCC  -=CC  -$strCC  -}DD  -}EE  -;EE  -optionsGG  -.GG ! -AddSecurityDefinitionGG ! -(GG! " -securitySchemeGG" 0 -.GG0 1 - ReferenceGG1 : -.GG: ; -IdGG; = -,GG= > -securitySchemeGG? M -)GGM N -;GGN O -optionsHH  -.HH " -AddSecurityRequirementHH " -(HH" # -newHH# && -OpenApiSecurityRequirementHH' A -{II  -{JJ  -securitySchemeJJ -  -,JJ  -ArrayJJ  -.JJ  -EmptyJJ % -<JJ% & -stringJJ& , ->JJ, - -(JJ- . -)JJ. / -}JJ0 1 -}KK  -)KK  -;KK  -}LL  -)LL  -;LL  -builderMM  -.MM  -ServicesMM  -.MM  - AddSingletonMM  -(MM  -odbcMM " -)MM" # -;MM# $ -builderNN  -.NN  -ServicesNN  -.NN  - AddScopedNN  -<NN  -OdbcConnectionNN ) ->NN) * -(NN* + -_NN+ , -=>NN- / -newNN0 3 -OdbcConnectionNN4 B -(NNB C -odbcNNC G -.NNG H -ToConnectionStringNNH Z -(NNZ [ -)NN[ \ -)NN\ ] -)NN] ^ -;NN^ _ -builderOO  -.OO  -ServicesOO  -.OO  - AddSingletonOO  -(OO  - -jwtOptionsOO ( -)OO( ) -;OO) * -builderPP  -.PP  -ServicesPP  -.PP  - AddSingletonPP  -<PP  - TokenServicePP * ->PP* + -(PP+ , -)PP, - -;PP- . -builderQQ  -.QQ  -ServicesQQ  -.QQ  - AddSingletonQQ  -<QQ  - DemoUserStoreQQ + ->QQ+ , -(QQ, - -)QQ- . -;QQ. / -builderSS  -.SS  -ServicesSS  -.TT  -AddAuthenticationTT  -(TT  -JwtBearerDefaultsTT ( -.TT( ) -AuthenticationSchemeTT) = -)TT= > -.UU  - AddJwtBearerUU  -(UU  -optionsUU  -=>UU  -{VV  -optionsWW  -.WW % -TokenValidationParametersWW ) -=WW* + -newWW, /% -TokenValidationParametersWW0 I -{XX  -ValidateIssuerYY  -=YY  -trueYY ! -,YY! " - ValidIssuerZZ  -=ZZ  - -jwtOptionsZZ $ -.ZZ$ % -IssuerZZ% + -,ZZ+ , -ValidateAudience[[  -=[[  -true[[ # -,[[# $ - ValidAudience\\  -=\\  - -jwtOptions\\ & -.\\& ' -Audience\\' / -,\\/ 0$ -ValidateIssuerSigningKey]] $ -=]]% & -true]]' + -,]]+ , -IssuerSigningKey^^  -=^^  - -signingKey^^ ) -,^^) * -ValidateLifetime__  -=__  -true__ # -,__# $ - ClockSkew``  -=``  -TimeSpan``  -.`` ! - FromMinutes``! , -(``, - -$num``- . -)``. / -}aa  -;aa - -}bb  -)bb  -;bb  -builderdd  -.dd  -Servicesdd  -.dd  -AddAuthorizationdd ! -(dd! " -optionsdd" ) -=>dd* , -{ee  -optionsff  -.ff  - AddPolicyff  -(ff  - AuthPoliciesff " -.ff" # -RequireOperatorff# 2 -,ff2 3 -policyff4 : -=>ff; = -policygg  -.gg  - RequireRolegg  -(gg  -Rolesgg  -.gg ! -Admingg! & -,gg& ' -Rolesgg( - -.gg- . -Operatorgg. 6 -)gg6 7 -)gg7 8 -;gg8 9 -optionshh  -.hh  - AddPolicyhh  -(hh  - AuthPolicieshh " -.hh" # - RequireAdminhh# / -,hh/ 0 -policyhh1 7 -=>hh8 : -policyii  -.ii  - RequireRoleii  -(ii  -Rolesii  -.ii ! -Adminii! & -)ii& ' -)ii' ( -;ii( ) -}jj  -)jj  -;jj  -varll  -appll  -=ll  -builderll -  -.ll  -Buildll  -(ll  -)ll  -;ll  -ifnn  -(nn  -appnn  -.nn  - Environmentnn  -.nn  - IsDevelopmentnn ! -(nn! " -)nn" # -)nn# $ -{oo  -apppp  -.pp  - -UseSwaggerpp  -(pp  -)pp  -;pp  -appqq  -.qq  - UseSwaggerUIqq  -(qq  -)qq  -;qq  -}rr  -apptt  -.tt $ -UseSerilogRequestLoggingtt  -(tt  -)tt  -;tt  -appvv  -.vv  -UseAuthenticationvv  -(vv  -)vv  -;vv  -appww  -.ww  -UseAuthorizationww  -(ww  -)ww  -;ww  -appyy  -.yy  -MapRootEndpointsyy  -(yy  -)yy  -;yy  -var{{  -api{{  -={{  -app{{ -  -.{{  -MapGroup{{  -({{  -$str{{  -){{  -;{{  -api||  -.||  -MapSystemEndpoints||  -(||  -)||  -;||  -api}}  -.}}  -MapAuthEndpoints}}  -(}}  -)}}  -;}}  -api~~  -.~~  -MapAs400Endpoints~~  -(~~  -)~~  -;~~  -api  -.  -MapORDUAGEndpoints  -(  -)  -;  -app  -. -  -Run -  -( -  -) -  -; - diff --git a/.sonarqube/out/0/output-cs/token-type.pb b/.sonarqube/out/0/output-cs/token-type.pb deleted file mode 100644 index f7db817..0000000 --- a/.sonarqube/out/0/output-cs/token-type.pb +++ /dev/null @@ -1,437 +0,0 @@ -Ý -)/workspaces/AS400API/Auth/AuthPolicies.cs -  -         -     * ;  -     ' 5 -%/workspaces/AS400API/Auth/DemoUser.cs -  -  -         -     % + : @ O b c i  -      -   ! $  -   ! $  -    % / 2² -*/workspaces/AS400API/Auth/DemoUserStore.cs -  -  -  -  -       !                &   ( 0    -                &   ( 0   2 @   # * , 6 8 ; @ E M R   & 0 2 < > A F K  -     0 6 % ( ) ,      -   $ , 3 9         ' - 8 > I \ ] c    )            ‰ -)/workspaces/AS400API/Auth/LoginRequest.cs -  -       ! " ( 3 9À -*/workspaces/AS400API/Auth/LoginResponse.cs -  -  -       " # ) 7 : F L X k l rà -+/workspaces/AS400API/Auth/PasswordHasher.cs -  -  -  -  -       "               ! #  - -   - -   - -   - - "               # *    -            &   : @    (    % = M     3 :  -      $ / 5 B H        ) F V    !    &Ö -"/workspaces/AS400API/Auth/Roles.cs -  -         -      '  -     # - -)/workspaces/AS400API/Auth/TokenService.cs -  -  -  -  -  -  -  -   -                                , = @  -    "  -    &   ! $ % 7    $ % -          #    '    ' - 1     ""  ""  ""  $$  $$  $$! + ''  ''  '' ( ++  .. ¼ -0/workspaces/AS400API/Configuration/JwtOptions.cs -  -  -  -         -     & +  - - -  - -   - -   - - #  - -) 3    -           " %   + =    -               & I    -       , /   1 4   : <  -    -   . 6 P R      / 0   - * +      / 0 k‡ -1/workspaces/AS400API/Configuration/OdbcOptions.cs -  -  -  -         -     ! $    -       & )   + .  - - -  - -   - -   - - "    -        !   # &        Z    -     ! $  -    " $ ' - 0  -   " % ' * 0 7  -      " ( ,  -    @    $ < O T n        #     # % % &        -   D F F W i j  -   8 : : > D E  -   < > > B L M    -       : <   < C   K L !! - !!  !!= ? !!? I !!T U "" - ""  ""@ B ""B P ""^ _ ## - ## - $$  $$  $$ ë -0/workspaces/AS400API/Endpoints/As400Endpoints.cs -  -  -  -  -  -  -  -  -   - - -  -   -       "  -    # 6 : ; L  & ( - / 5 ; I P ^   4 H         & _    " . 1 < ` & W h i    !     !!& M ""  ""  $$  $$  &&$ 9 ''  ''  ''' ) '') 7 ''C D ** * ++ Q ,,  --  // * //, 1 //3 A //H V 11  114 L 22  44  55  55  55( x 66  66 $ 77  88& F 99  99  ;;  ;;  ==$ C >>  >>  >>' ) >>) A >>M N AA * BB K DD ' DD) . DD0 6 DDD R DDY g FF  FF4 I GG  II  JJ  JJ  LL& _ MM  MM " MM. 1 MM< h PP  PP  PU(  WW  WW # WW> A XX& [ YY  ZZ  ZZ  \\  \\  ^^$ X __  __  __' ) __) @ __L M bb * cc I ee 0 ee2 7 ee9 ? eeM S ee_ m  eet ‚ gg  gg4 Q hh  jj  kk  kk  kk> D mm& x nn  nn " nn. 1 nn< z qq  qq  qw(  yy  yy  yy  ||  -€€  -„„  -„„ ! -„„" & -„„' 2 -„„3 9 -„„; A -……  -……  -……  -……* / -‡‡  -‡‡  -‰‰  -‰‰" % -‰‰& 0 -‰‰1 7 -‰‰9 ? -‰‰A O -ŠŠ  -ŠŠ  -ŠŠ% & -““ ` -”” 3 -––& U -——  -˜˜  -˜˜  -šš  -šš  -œœ$ R -  -  -' ) -) A -M N -   > -¡¡ X -££ ­" -6/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs -  -  -  -  -  -  -  -  -   - - -  -   -   -       "        "                               !!  ""  ##  $$  %%  &&  ''  ((  ))  **  ++  ,,  --  ..  //  00  11  22 # 33  44  55  66  77  88  99  ::  ;;  << # ==  >>  ??  @@  AA  BB  CC  DD  EE  FF  GG  HH  II  JJ  KK " LL " MM " NN " OO " PP " QQ " RR " SS " TT # UU # VV # WW " XX  YY $ ZZ ! [[ $ \\ ! ]] " ^^  __ ! ``  aa ! bb  cc  dd  ee $ ff ! gg % hh " ii  jj  kk  ll  mm  nn  oo  pp  qq  rr  ss  tt  uu  vv  ww  xx  yy  zz  {{  ||  }}  ~~    -€€  -  -‚‚  -ƒƒ  -„„  -……  -††  -‡‡  -ˆˆ  -‰‰  -ŠŠ  -‹‹  -ŒŒ  -  -ŽŽ  -  -  -‘‘  -’’  -““  -””  -••  -˜˜  -˜˜  -˜˜  -˜˜ ! -˜˜7 : -˜˜; I -˜˜K W -˜˜c o -šš - -šš  -šš # -šš7 ; -šš< M -œœ ' -œœ) . -  - * -žž  -ŸŸ  -¡¡  -¡¡8 H -¢¢  -¤¤  -¦¦  -¦¦< = -§§  -§§  -©©* V -ªª  -­­  -­­D F -®® # -®®4 5 -®®7 : -°°  -°°& * -°°3 4 -±±  -±±% ( -³³  -³³ & -³³2 5 -³³@ ^ -¶¶  -¶¶" % -¸¸  -¸¸% ( -¸¸) 6 -¹¹* 2 -ºº* 0 -ºº6 ; -ººZ \ -ººh i -»»* ? -¼¼* 7 -¾¾  -¾¾* - -¾¾. 2 -¾¾3 9 -ÀÀ  -ÀÀ  -ÂÂ. H -ÆÆ  -ÆÆ  -ÈÈ. F -ÌÌ  -ÌÌ  -ÎÎ. D -ÒÒ* C -ÓÓ* P -ØØ  -ØØ  -ØØ # -ÛÛ  -ÛÛ  -ÛÛ' ) -ÝÝ  -ââ  -ââ " -ââ# ' -ââ( 3 -ââ4 : -ââ< B -ãã  -ãã  -ãã! $ -ãã. 3 -åå  -åå $ -çç  -çç& ) -çç* 4 -çç5 ; -çç= C -ççE S -èè  -èè! $ -èè) * -êê # óó ž -ûû  -üü  -üü " -þþ  -þþ  -€€( Q -  - " -+ - -- D -P Q -„„ B -…… M -‡‡  -ŠŠ - -ŠŠ  -ŠŠ  -ŠŠ # -ŒŒ  -ŒŒ  -ŒŒ$ ' -ŒŒ) - -ŽŽ  -ŽŽ  -ŽŽ% ( -ŽŽ* . -  -  -# & -( , -’’  -’’  -’’  -’’ $ -””  -””  -”” " -””$ (¯ -//workspaces/AS400API/Endpoints/AuthEndpoints.cs -  -  -  -  -  -  -  -   -              !    -        #   5 9   : K  & ( - . 2 3 : = I S ` l x -‡ ‘       # ) R X     * - 8 ]                      ! " / e g i q    B !!  !!! , ""  ##  %% # %%& 5 ''  ''F ] ''f o ((  ((% / ))  ))  )) ! ,, O .. î -1/workspaces/AS400API/Endpoints/SystemEndpoints.cs -  -  -  -  -  -  -              #    -        '   9 =   > S        %   ) ,   6 @   K O    -    # 7 ; < M  ! # ( * 8         " Y     # (       / 0    " & ) 4 < ^ j  y  !!  !!  !!" % !!0 8 !!A J ##  ##  %%  %%  %%' ) %%) B %%N O )) · -;/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs -  -  -  -  -  -       (  - - -  - -   - -   - - )  - -* 0  - -2 8  - -T X  - -Y d  - -e l                  " # ) + 1             ! + , 2 4 :    -      $ & , E I J U V \ ^ d      # $ * , 2 5 C       !!  !!  %%  ((  ((  ((  ((& , ** - **  ,,  //  00  00  00 # 00% ( 00, > 44 - 44  66  99 - 99  ;;  ;;# $ <<  <<" # >>  AA  AA  AA1 2 AA? @ DD  DD  DD " EE  FF  FF  FF  HH  II  II" # KK  NN  NN4 5 OO  OO! " QQ" # UU Ë -;/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs -  -  -  -       (  -     - 1 2 > G J  - - -            -           + 1 3 C * 3 5 E    § - -/workspaces/AS400API/Program.cs -  -  -  -  -  -  -  -  -   -  4 -         & , -       -  -      ! ' - ,   3 A  % = V   1 =       5 E !!  !!3 A !!F I -##  ## - $$ - %% - ''  '' o -**  -++  ++2 < ++N X ++_ b ++c m ---  --  -- ) --* 2 22  22  22! , 44  55  88  88  88 2 ::  ;; I <<  == ! >>  ??  @@  @@ ( BB  CC  HH# & HH' A JJ  JJ& , NN ) NN0 3 NN4 B PP * QQ + TT ( WW, / WW0 I YY ! [[ # ]]' + __ # ``  ``- . ff " gg  gg( - hh " ii  -ll  -nn  -{{  {{  „„ 1 …… F \ No newline at end of file diff --git a/.sonarqube/out/ScannerEngineInput.json b/.sonarqube/out/ScannerEngineInput.json deleted file mode 100644 index 0a10269..0000000 --- a/.sonarqube/out/ScannerEngineInput.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "scannerProperties": [ - { - "key": "sonar.scanner.app", - "value": "ScannerMSBuild" - }, - { - "key": "sonar.scanner.appVersion", - "value": "10.4.1" - }, - { - "key": "sonar.projectKey", - "value": "as400api" - }, - { - "key": "sonar.projectName", - "value": "AS400API" - }, - { - "key": "sonar.working.directory", - "value": "/workspaces/AS400API/.sonarqube/out/.sonar" - }, - { - "key": "sonar.projectBaseDir", - "value": "/workspaces/AS400API" - }, - { - "key": "sonar.pullrequest.cache.basepath", - "value": "/workspaces/AS400API" - }, - { - "key": "sonar.sources", - "value": "" - }, - { - "key": "sonar.tests", - "value": "" - }, - { - "key": "sonar.modules", - "value": "40CB5B53-77B8-B1FD-458C-805350CB09E8" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectKey", - "value": "as400api:40CB5B53-77B8-B1FD-458C-805350CB09E8" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectName", - "value": "AS400API" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectBaseDir", - "value": "/workspaces/AS400API" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.working.directory", - "value": "/workspaces/AS400API/.sonarqube/out/.sonar/mod0" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.sourceEncoding", - "value": "utf-8" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.tests", - "value": "" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.sources", - "value": "/workspaces/AS400API/Auth/AuthPolicies.cs,/workspaces/AS400API/Auth/DemoUser.cs,/workspaces/AS400API/Auth/DemoUserStore.cs,/workspaces/AS400API/Auth/LoginRequest.cs,/workspaces/AS400API/Auth/LoginResponse.cs,/workspaces/AS400API/Auth/PasswordHasher.cs,/workspaces/AS400API/Auth/Roles.cs,/workspaces/AS400API/Auth/TokenService.cs,/workspaces/AS400API/Configuration/JwtOptions.cs,/workspaces/AS400API/Configuration/OdbcOptions.cs,/workspaces/AS400API/Endpoints/As400Endpoints.cs,/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs,/workspaces/AS400API/Endpoints/AuthEndpoints.cs,/workspaces/AS400API/Endpoints/SystemEndpoints.cs,/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs,/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs,/workspaces/AS400API/Program.cs,/workspaces/AS400API/obj/Debug/net9.0/AS400API.GlobalUsings.g.cs,\"/workspaces/AS400API/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs\",/workspaces/AS400API/obj/Debug/net9.0/AS400API.AssemblyInfo.cs,/workspaces/AS400API/obj/Debug/net9.0/AS400API.MvcApplicationPartsAssemblyInfo.cs,/workspaces/AS400API/appsettings.json,/workspaces/AS400API/.dockerignore,/workspaces/AS400API/docker-compose.yml,/workspaces/AS400API/docker/odbc/odbc.ini,/workspaces/AS400API/docker/odbc/odbcinst.ini,/workspaces/AS400API/Dockerfile,/workspaces/AS400API/drivers/ibm-iaccess-1.1.0.28-1.0.x86_64.rpm,/workspaces/AS400API/Logs/as400-api-20251001.log,/workspaces/AS400API/Logs/as400-api-20251002.log,/workspaces/AS400API/Logs/as400-api-20251003.log,/workspaces/AS400API/Logs/as400-api-20251004.log,/workspaces/AS400API/README.md,/workspaces/AS400API/scripts/run-sonar.sh,/workspaces/AS400API/scripts/test-databases.sh,/workspaces/AS400API/obj/AS400API.csproj.nuget.dgspec.json,/workspaces/AS400API/obj/project.assets.json,/workspaces/AS400API/.devcontainer/Dockerfile,/workspaces/AS400API/.devcontainer/devcontainer.json,/workspaces/AS400API/.vscode/launch.json,/workspaces/AS400API/.vscode/tasks.json,/workspaces/AS400API/obj/Debug/net9.0/staticwebassets.build.json,/workspaces/AS400API/obj/Debug/net9.0/staticwebassets.build.endpoints.json,/workspaces/AS400API/obj/Debug/net9.0/rjsmrazor.dswa.cache.json,/workspaces/AS400API/obj/Debug/net9.0/rjsmcshtml.dswa.cache.json,/workspaces/AS400API/obj/Debug/net9.0/rpswa.dswa.cache.json,/workspaces/AS400API/bin/Debug/net9.0/AS400API.deps.json,/workspaces/AS400API/bin/Debug/net9.0/appsettings.json,/workspaces/AS400API/bin/Debug/net9.0/AS400API.runtimeconfig.json,/workspaces/AS400API/bin/Debug/net9.0/AS400API.staticwebassets.endpoints.json" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.analyzer.projectOutPaths", - "value": "/workspaces/AS400API/.sonarqube/out/0" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.roslyn.reportFilePaths", - "value": "/workspaces/AS400API/.sonarqube/out/0/Issues.json" - }, - { - "key": "40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.scanner.telemetry", - "value": "/workspaces/AS400API/.sonarqube/out/0/Telemetry.json" - }, - { - "key": "sonar.login", - "value": "***" - }, - { - "key": "sonar.host.url", - "value": "http://host.docker.internal:9000" - }, - { - "key": "sonar.cs.opencover.reportsPaths", - "value": "**/coverage.opencover.xml" - }, - { - "key": "sonar.exclusions", - "value": "**/bin/**,**/obj/**,**/coverage.opencover.xml" - }, - { - "key": "sonar.visualstudio.enable", - "value": "false" - } - ] -} \ No newline at end of file diff --git a/.sonarqube/out/sonar-project.properties b/.sonarqube/out/sonar-project.properties deleted file mode 100644 index 313a873..0000000 --- a/.sonarqube/out/sonar-project.properties +++ /dev/null @@ -1,78 +0,0 @@ -sonar.projectKey=as400api -sonar.projectName=AS400API -sonar.working.directory=/workspaces/AS400API/.sonarqube/out/.sonar -sonar.projectBaseDir=/workspaces/AS400API -sonar.pullrequest.cache.basepath=/workspaces/AS400API - -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectKey=as400api:40CB5B53-77B8-B1FD-458C-805350CB09E8 -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectName=AS400API -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.projectBaseDir=/workspaces/AS400API -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.sourceEncoding=utf-8 -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.tests= -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.sources=\ -"/workspaces/AS400API/Auth/AuthPolicies.cs",\ -"/workspaces/AS400API/Auth/DemoUser.cs",\ -"/workspaces/AS400API/Auth/DemoUserStore.cs",\ -"/workspaces/AS400API/Auth/LoginRequest.cs",\ -"/workspaces/AS400API/Auth/LoginResponse.cs",\ -"/workspaces/AS400API/Auth/PasswordHasher.cs",\ -"/workspaces/AS400API/Auth/Roles.cs",\ -"/workspaces/AS400API/Auth/TokenService.cs",\ -"/workspaces/AS400API/Configuration/JwtOptions.cs",\ -"/workspaces/AS400API/Configuration/OdbcOptions.cs",\ -"/workspaces/AS400API/Endpoints/As400Endpoints.cs",\ -"/workspaces/AS400API/Endpoints/AS400_CP3FPRD/ORDUAG.cs",\ -"/workspaces/AS400API/Endpoints/AuthEndpoints.cs",\ -"/workspaces/AS400API/Endpoints/SystemEndpoints.cs",\ -"/workspaces/AS400API/Infrastructure/DatabaseRowFormatter.cs",\ -"/workspaces/AS400API/Infrastructure/DataReaderExtensions.cs",\ -"/workspaces/AS400API/Program.cs",\ -"/workspaces/AS400API/obj/Debug/net9.0/AS400API.GlobalUsings.g.cs",\ -"/workspaces/AS400API/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs",\ -"/workspaces/AS400API/obj/Debug/net9.0/AS400API.AssemblyInfo.cs",\ -"/workspaces/AS400API/obj/Debug/net9.0/AS400API.MvcApplicationPartsAssemblyInfo.cs",\ -"/workspaces/AS400API/appsettings.json",\ -"/workspaces/AS400API/.dockerignore",\ -"/workspaces/AS400API/docker-compose.yml",\ -"/workspaces/AS400API/docker/odbc/odbc.ini",\ -"/workspaces/AS400API/docker/odbc/odbcinst.ini",\ -"/workspaces/AS400API/Dockerfile",\ -"/workspaces/AS400API/drivers/ibm-iaccess-1.1.0.28-1.0.x86_64.rpm",\ -"/workspaces/AS400API/Logs/as400-api-20251001.log",\ -"/workspaces/AS400API/Logs/as400-api-20251002.log",\ -"/workspaces/AS400API/Logs/as400-api-20251003.log",\ -"/workspaces/AS400API/Logs/as400-api-20251004.log",\ -"/workspaces/AS400API/README.md",\ -"/workspaces/AS400API/scripts/run-sonar.sh",\ -"/workspaces/AS400API/scripts/test-databases.sh",\ -"/workspaces/AS400API/obj/AS400API.csproj.nuget.dgspec.json",\ -"/workspaces/AS400API/obj/project.assets.json",\ -"/workspaces/AS400API/.devcontainer/Dockerfile",\ -"/workspaces/AS400API/.devcontainer/devcontainer.json",\ -"/workspaces/AS400API/.vscode/launch.json",\ -"/workspaces/AS400API/.vscode/tasks.json",\ -"/workspaces/AS400API/obj/Debug/net9.0/staticwebassets.build.json",\ -"/workspaces/AS400API/obj/Debug/net9.0/staticwebassets.build.endpoints.json",\ -"/workspaces/AS400API/obj/Debug/net9.0/rjsmrazor.dswa.cache.json",\ -"/workspaces/AS400API/obj/Debug/net9.0/rjsmcshtml.dswa.cache.json",\ -"/workspaces/AS400API/obj/Debug/net9.0/rpswa.dswa.cache.json",\ -"/workspaces/AS400API/bin/Debug/net9.0/AS400API.deps.json",\ -"/workspaces/AS400API/bin/Debug/net9.0/appsettings.json",\ -"/workspaces/AS400API/bin/Debug/net9.0/AS400API.runtimeconfig.json",\ -"/workspaces/AS400API/bin/Debug/net9.0/AS400API.staticwebassets.endpoints.json" - -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.analyzer.projectOutPaths=\ -"/workspaces/AS400API/.sonarqube/out/0" -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.roslyn.reportFilePaths=\ -"/workspaces/AS400API/.sonarqube/out/0/Issues.json" -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.cs.scanner.telemetry=\ -"/workspaces/AS400API/.sonarqube/out/0/Telemetry.json" - -40CB5B53-77B8-B1FD-458C-805350CB09E8.sonar.working.directory=/workspaces/AS400API/.sonarqube/out/.sonar/mod0 -sonar.host.url=http://host.docker.internal:9000 -sonar.cs.opencover.reportsPaths=**/coverage.opencover.xml -sonar.exclusions=**/bin/**,**/obj/**,**/coverage.opencover.xml -sonar.visualstudio.enable=false - -sonar.modules=40CB5B53-77B8-B1FD-458C-805350CB09E8 - diff --git a/Jenkinsfile b/Jenkinsfile index 61e147e..10a2cb5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -142,10 +142,7 @@ pipeline { /d:sonar.host.url="\$SONAR_HOST_URL" \ /d:sonar.login="\$SONAR_AUTH_TOKEN" - dotnet build -c Release \ - -p:EnableNETAnalyzers=true \ - -p:TreatWarningsAsErrors=true \ - -warnaserror + dotnet build -c Release /warnaserror- -p:TreatWarningsAsErrors=false dotnet sonarscanner end /d:sonar.login="\$SONAR_AUTH_TOKEN" """ diff --git a/Program.cs b/Program.cs index 38caa92..76e2112 100644 --- a/Program.cs +++ b/Program.cs @@ -126,10 +126,10 @@ api.MapAuthEndpoints(); api.MapAs400Endpoints(); api.MapORDUAGEndpoints(); -app.Run(); +await app.RunAsync(); // env DOTNET_ENVIRONMENT=Development dotnet run // docker run -d --name sonarqube -p 9000:9000 sonarqube:lts-community -public partial class Program { } +public static partial class Program { } diff --git a/scripts/run-sonar.sh b/scripts/run-sonar.sh index b1c0933..91de4ba 100755 --- a/scripts/run-sonar.sh +++ b/scripts/run-sonar.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -export "SONAR_TOKEN"="squ_ef2f0a2f495a32c33ed81afb16f3cdc98bf1336a" +export "SONAR_TOKEN"="sqa_a38081f27f9e32376feed2e653b48ed5a0723565" if [[ -z "${SONAR_HOST_URL:-}" ]]; then echo "SONAR_HOST_URL environment variable is required" >&2