feat: 完成连接测试和新建s3连接函数
This commit is contained in:
		
							
								
								
									
										34
									
								
								frontend/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										34
									
								
								frontend/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@@ -20,6 +20,9 @@ importers:
 | 
				
			|||||||
      react-dom:
 | 
					      react-dom:
 | 
				
			||||||
        specifier: ^18.2.0
 | 
					        specifier: ^18.2.0
 | 
				
			||||||
        version: 18.3.1(react@18.3.1)
 | 
					        version: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					      react-router-dom:
 | 
				
			||||||
 | 
					        specifier: ^6.26.2
 | 
				
			||||||
 | 
					        version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
    devDependencies:
 | 
					    devDependencies:
 | 
				
			||||||
      '@types/react':
 | 
					      '@types/react':
 | 
				
			||||||
        specifier: ^18.0.17
 | 
					        specifier: ^18.0.17
 | 
				
			||||||
@@ -698,6 +701,10 @@ packages:
 | 
				
			|||||||
  '@jridgewell/trace-mapping@0.3.25':
 | 
					  '@jridgewell/trace-mapping@0.3.25':
 | 
				
			||||||
    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
 | 
					    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@remix-run/router@1.19.2':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==}
 | 
				
			||||||
 | 
					    engines: {node: '>=14.0.0'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@swc/helpers@0.5.13':
 | 
					  '@swc/helpers@0.5.13':
 | 
				
			||||||
    resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
 | 
					    resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -990,6 +997,19 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
 | 
					    resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
 | 
				
			||||||
    engines: {node: '>=0.10.0'}
 | 
					    engines: {node: '>=0.10.0'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-router-dom@6.26.2:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==}
 | 
				
			||||||
 | 
					    engines: {node: '>=14.0.0'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      react: '>=16.8'
 | 
				
			||||||
 | 
					      react-dom: '>=16.8'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-router@6.26.2:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==}
 | 
				
			||||||
 | 
					    engines: {node: '>=14.0.0'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      react: '>=16.8'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  react-transition-group@4.4.5:
 | 
					  react-transition-group@4.4.5:
 | 
				
			||||||
    resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
 | 
					    resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
 | 
				
			||||||
    peerDependencies:
 | 
					    peerDependencies:
 | 
				
			||||||
@@ -2370,6 +2390,8 @@ snapshots:
 | 
				
			|||||||
      '@jridgewell/resolve-uri': 3.1.2
 | 
					      '@jridgewell/resolve-uri': 3.1.2
 | 
				
			||||||
      '@jridgewell/sourcemap-codec': 1.5.0
 | 
					      '@jridgewell/sourcemap-codec': 1.5.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@remix-run/router@1.19.2': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@swc/helpers@0.5.13':
 | 
					  '@swc/helpers@0.5.13':
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      tslib: 2.7.0
 | 
					      tslib: 2.7.0
 | 
				
			||||||
@@ -2602,6 +2624,18 @@ snapshots:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  react-refresh@0.14.2: {}
 | 
					  react-refresh@0.14.2: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@remix-run/router': 1.19.2
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					      react-router: 6.26.2(react@18.3.1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-router@6.26.2(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@remix-run/router': 1.19.2
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
					  react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@babel/runtime': 7.25.6
 | 
					      '@babel/runtime': 7.25.6
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										0
									
								
								frontend/wailsjs/go/controller/App.d.ts
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								frontend/wailsjs/go/controller/App.d.ts
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										0
									
								
								frontend/wailsjs/go/controller/App.js
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								frontend/wailsjs/go/controller/App.js
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										18
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								go.mod
									
									
									
									
									
								
							@@ -5,11 +5,29 @@ go 1.21
 | 
				
			|||||||
toolchain go1.23.0
 | 
					toolchain go1.23.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2 v1.31.0
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/config v1.27.38
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/credentials v1.17.36
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2
 | 
				
			||||||
	github.com/loveuer/nf v0.2.11
 | 
						github.com/loveuer/nf v0.2.11
 | 
				
			||||||
	github.com/wailsapp/wails/v2 v2.9.2
 | 
						github.com/wailsapp/wails/v2 v2.9.2
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.18 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 // indirect
 | 
				
			||||||
 | 
						github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 // indirect
 | 
				
			||||||
 | 
						github.com/aws/smithy-go v1.21.0 // indirect
 | 
				
			||||||
	github.com/bep/debounce v1.2.1 // indirect
 | 
						github.com/bep/debounce v1.2.1 // indirect
 | 
				
			||||||
	github.com/fatih/color v1.17.0 // indirect
 | 
						github.com/fatih/color v1.17.0 // indirect
 | 
				
			||||||
	github.com/go-ole/go-ole v1.2.6 // indirect
 | 
						github.com/go-ole/go-ole v1.2.6 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										36
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								go.sum
									
									
									
									
									
								
							@@ -1,3 +1,39 @@
 | 
				
			|||||||
 | 
					github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 h1:xDAuZTn4IMm8o1LnBZvmrL8JA1io4o3YWNXgohbf20g=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5/go.mod h1:wYSv6iDS621sEFLfKvpPE2ugjTuGlAG7iROg0hLOkfc=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.18 h1:OWYvKL53l1rbsUmW7bQyJVsYU/Ii3bbAAQIIFNbM0Tk=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.18/go.mod h1:CUx0G1v3wG6l01tUB+j7Y8kclA8NSqK4ef0YG79a4cg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20 h1:rTWjG6AvWekO2B1LHeM3ktU7MqyX9rzWQ7hgzneZW7E=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20/go.mod h1:RGW2DDpVc8hu6Y6yG8G5CHVmVOAn1oV8rNKOHRJyswg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18 h1:eb+tFOIl9ZsUe2259/BKPeniKuz4/02zZFH/i4Nf8Rg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18/go.mod h1:GVCC2IJNJTmdlyEsSmofEy7EfJncP7DNnXDzRjJ5Keg=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2 h1:1iXmXy8SJzQVMGvo40TSzBYS9ig6BSyXfRIMzLfmBfE=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2/go.mod h1:NLTqRLe3pUNu3nTEHI6XlHLKYmc8fbHUdMxAB6+s41Q=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 h1:yzi/y/vKlLyzOfG7pSu5ONNGRxHIgLeDrV4w2AMRCo0=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sso v1.23.2/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2 h1:3gb6pYhYLjo8rB1h2Tqs61wpjRd3rQymYcVq/pp0yxI=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.2/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8=
 | 
				
			||||||
 | 
					github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI=
 | 
				
			||||||
 | 
					github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA=
 | 
				
			||||||
 | 
					github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
 | 
				
			||||||
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
 | 
					github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
 | 
				
			||||||
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
 | 
					github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
 | 
				
			||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
					github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package handler
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"nf-disk/internal/ndh"
 | 
						"nf-disk/internal/ndh"
 | 
				
			||||||
 | 
						"nf-disk/internal/s3"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ConnectionTest(c *ndh.Ctx) error {
 | 
					func ConnectionTest(c *ndh.Ctx) error {
 | 
				
			||||||
@@ -21,5 +22,13 @@ func ConnectionTest(c *ndh.Ctx) error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if req.Endpoint == "" || req.Access == "" || req.Key == "" {
 | 
				
			||||||
 | 
							return c.Send400(nil, "endpoint, secret_access, secret_key 是必填项")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if _, err = s3.New(c.Context(), req.Endpoint, req.Access, req.Key); err != nil {
 | 
				
			||||||
 | 
							return c.Send500(err.Error(), "连接失败")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return c.Send200("test success")
 | 
						return c.Send200("test success")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,10 @@ func NewCtx(ctx context.Context, req *json.Decoder, res io.Writer) *Ctx {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *Ctx) Context() context.Context {
 | 
				
			||||||
 | 
						return c.ctx
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Ctx) Write(bs []byte) (int, error) {
 | 
					func (c *Ctx) Write(bs []byte) (int, error) {
 | 
				
			||||||
	return c.res.Write(bs)
 | 
						return c.res.Write(bs)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										62
									
								
								internal/s3/new.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								internal/s3/new.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					package s3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/aws"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/config"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/credentials"
 | 
				
			||||||
 | 
						"github.com/aws/aws-sdk-go-v2/service/s3"
 | 
				
			||||||
 | 
						smithyendpoints "github.com/aws/smithy-go/endpoints"
 | 
				
			||||||
 | 
						"github.com/loveuer/nf/nft/log"
 | 
				
			||||||
 | 
						"net/url"
 | 
				
			||||||
 | 
						"nf-disk/internal/tool"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type resolverV2 struct{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (*resolverV2) ResolveEndpoint(ctx context.Context, params s3.EndpointParameters) (
 | 
				
			||||||
 | 
						smithyendpoints.Endpoint, error,
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
						u, err := url.Parse(*params.Endpoint)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return smithyendpoints.Endpoint{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return smithyendpoints.Endpoint{
 | 
				
			||||||
 | 
							URI: *u,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Client struct {
 | 
				
			||||||
 | 
						client *s3.Client
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(ctx context.Context, endpoint string, access string, key string) (*Client, error) {
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							err       error
 | 
				
			||||||
 | 
							sdkConfig aws.Config
 | 
				
			||||||
 | 
							output    *s3.ListBucketsOutput
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if sdkConfig, err = config.LoadDefaultConfig(ctx); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						s3Client := s3.NewFromConfig(sdkConfig, func(o *s3.Options) {
 | 
				
			||||||
 | 
							o.BaseEndpoint = aws.String(endpoint)
 | 
				
			||||||
 | 
							o.EndpointResolverV2 = &resolverV2{}
 | 
				
			||||||
 | 
							o.Credentials = aws.NewCredentialsCache(credentials.NewStaticCredentialsProvider(access, key, ""))
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if output, err = s3Client.ListBuckets(tool.Timeout(5), &s3.ListBucketsInput{
 | 
				
			||||||
 | 
							MaxBuckets: aws.Int32(2),
 | 
				
			||||||
 | 
						}); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, item := range output.Buckets {
 | 
				
			||||||
 | 
							log.Debug("s3.New: list bucket name = %s", *item.Name)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &Client{client: s3Client}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								internal/s3/new_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								internal/s3/new_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					package s3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/loveuer/nf/nft/log"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestNewClient(t *testing.T) {
 | 
				
			||||||
 | 
						log.SetLogLevel(log.LogLevelDebug)
 | 
				
			||||||
 | 
						_, err := New(context.TODO(), "http://10.220.10.15:9000/", "8ALV3DUZI31YG4BDRJ0Z", "CRqwS1MsiUj27TbRK+3T2n+LpKWd07VvaDKuzU0H")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatalf("call s3.New err = %s", err.Error())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user