mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 12:12:25 -05:00 
			
		
		
		
	[chore]: Bump github.com/minio/minio-go/v7 from 7.0.60 to 7.0.61 (#2041)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
		
					parent
					
						
							
								b874e9251e
							
						
					
				
			
			
				commit
				
					
						9ed9d96597
					
				
			
		
					 34 changed files with 510 additions and 748 deletions
				
			
		
							
								
								
									
										5
									
								
								vendor/github.com/klauspost/compress/flate/deflate.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/klauspost/compress/flate/deflate.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -90,9 +90,8 @@ type advancedState struct { | |||
| 	ii uint16 // position of last match, intended to overflow to reset. | ||||
| 
 | ||||
| 	// input window: unprocessed data is window[index:windowEnd] | ||||
| 	index          int | ||||
| 	estBitsPerByte int | ||||
| 	hashMatch      [maxMatchLength + minMatchLength]uint32 | ||||
| 	index     int | ||||
| 	hashMatch [maxMatchLength + minMatchLength]uint32 | ||||
| 
 | ||||
| 	// Input hash chains | ||||
| 	// hashHead[hashValue] contains the largest inputIndex with the specified hash value | ||||
|  |  | |||
							
								
								
									
										5
									
								
								vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/klauspost/compress/flate/huffman_bit_writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -34,11 +34,6 @@ const ( | |||
| 	// Should preferably be a multiple of 6, since | ||||
| 	// we accumulate 6 bytes between writes to the buffer. | ||||
| 	bufferFlushSize = 246 | ||||
| 
 | ||||
| 	// bufferSize is the actual output byte buffer size. | ||||
| 	// It must have additional headroom for a flush | ||||
| 	// which can contain up to 8 bytes. | ||||
| 	bufferSize = bufferFlushSize + 8 | ||||
| ) | ||||
| 
 | ||||
| // Minimum length code that emits bits. | ||||
|  |  | |||
							
								
								
									
										19
									
								
								vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/klauspost/compress/flate/huffman_sortByFreq.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -42,25 +42,6 @@ func quickSortByFreq(data []literalNode, a, b, maxDepth int) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // siftDownByFreq implements the heap property on data[lo, hi). | ||||
| // first is an offset into the array where the root of the heap lies. | ||||
| func siftDownByFreq(data []literalNode, lo, hi, first int) { | ||||
| 	root := lo | ||||
| 	for { | ||||
| 		child := 2*root + 1 | ||||
| 		if child >= hi { | ||||
| 			break | ||||
| 		} | ||||
| 		if child+1 < hi && (data[first+child].freq == data[first+child+1].freq && data[first+child].literal < data[first+child+1].literal || data[first+child].freq < data[first+child+1].freq) { | ||||
| 			child++ | ||||
| 		} | ||||
| 		if data[first+root].freq == data[first+child].freq && data[first+root].literal > data[first+child].literal || data[first+root].freq > data[first+child].freq { | ||||
| 			return | ||||
| 		} | ||||
| 		data[first+root], data[first+child] = data[first+child], data[first+root] | ||||
| 		root = child | ||||
| 	} | ||||
| } | ||||
| func doPivotByFreq(data []literalNode, lo, hi int) (midlo, midhi int) { | ||||
| 	m := int(uint(lo+hi) >> 1) // Written like this to avoid integer overflow. | ||||
| 	if hi-lo > 40 { | ||||
|  |  | |||
							
								
								
									
										1
									
								
								vendor/github.com/klauspost/compress/s2/encode_all.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/klauspost/compress/s2/encode_all.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -742,7 +742,6 @@ searchDict: | |||
| 				x := load64(src, s-2) | ||||
| 				m2Hash := hash6(x, tableBits) | ||||
| 				currHash := hash6(x>>8, tableBits) | ||||
| 				candidate = int(table[currHash]) | ||||
| 				table[m2Hash] = uint32(s - 2) | ||||
| 				table[currHash] = uint32(s - 1) | ||||
| 				cv = load64(src, s) | ||||
|  |  | |||
							
								
								
									
										44
									
								
								vendor/github.com/klauspost/compress/s2/encode_better.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/github.com/klauspost/compress/s2/encode_better.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -157,7 +157,6 @@ func encodeBlockBetterGo(dst, src []byte) (d int) { | |||
| 				index0 := base + 1 | ||||
| 				index1 := s - 2 | ||||
| 
 | ||||
| 				cv = load64(src, s) | ||||
| 				for index0 < index1 { | ||||
| 					cv0 := load64(src, index0) | ||||
| 					cv1 := load64(src, index1) | ||||
|  | @ -269,18 +268,21 @@ func encodeBlockBetterGo(dst, src []byte) (d int) { | |||
| 		lTable[hash7(cv0, lTableBits)] = uint32(index0) | ||||
| 		sTable[hash4(cv0>>8, sTableBits)] = uint32(index0 + 1) | ||||
| 
 | ||||
| 		// lTable could be postponed, but very minor difference. | ||||
| 		lTable[hash7(cv1, lTableBits)] = uint32(index1) | ||||
| 		sTable[hash4(cv1>>8, sTableBits)] = uint32(index1 + 1) | ||||
| 		index0 += 1 | ||||
| 		index1 -= 1 | ||||
| 		cv = load64(src, s) | ||||
| 
 | ||||
| 		// index every second long in between. | ||||
| 		for index0 < index1 { | ||||
| 		// Index large values sparsely in between. | ||||
| 		// We do two starting from different offsets for speed. | ||||
| 		index2 := (index0 + index1 + 1) >> 1 | ||||
| 		for index2 < index1 { | ||||
| 			lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0) | ||||
| 			lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1) | ||||
| 			lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2) | ||||
| 			index0 += 2 | ||||
| 			index1 -= 2 | ||||
| 			index2 += 2 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -459,12 +461,14 @@ func encodeBlockBetterSnappyGo(dst, src []byte) (d int) { | |||
| 		index1 -= 1 | ||||
| 		cv = load64(src, s) | ||||
| 
 | ||||
| 		// index every second long in between. | ||||
| 		for index0 < index1 { | ||||
| 		// Index large values sparsely in between. | ||||
| 		// We do two starting from different offsets for speed. | ||||
| 		index2 := (index0 + index1 + 1) >> 1 | ||||
| 		for index2 < index1 { | ||||
| 			lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0) | ||||
| 			lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1) | ||||
| 			lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2) | ||||
| 			index0 += 2 | ||||
| 			index1 -= 2 | ||||
| 			index2 += 2 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -599,7 +603,6 @@ searchDict: | |||
| 					if s >= sLimit { | ||||
| 						break searchDict | ||||
| 					} | ||||
| 					cv = load64(src, s) | ||||
| 					// Index in-between | ||||
| 					index0 := base + 1 | ||||
| 					index1 := s - 2 | ||||
|  | @ -865,12 +868,14 @@ searchDict: | |||
| 		index1 -= 1 | ||||
| 		cv = load64(src, s) | ||||
| 
 | ||||
| 		// index every second long in between. | ||||
| 		for index0 < index1 { | ||||
| 		// Index large values sparsely in between. | ||||
| 		// We do two starting from different offsets for speed. | ||||
| 		index2 := (index0 + index1 + 1) >> 1 | ||||
| 		for index2 < index1 { | ||||
| 			lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0) | ||||
| 			lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1) | ||||
| 			lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2) | ||||
| 			index0 += 2 | ||||
| 			index1 -= 2 | ||||
| 			index2 += 2 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -961,7 +966,6 @@ searchDict: | |||
| 				index0 := base + 1 | ||||
| 				index1 := s - 2 | ||||
| 
 | ||||
| 				cv = load64(src, s) | ||||
| 				for index0 < index1 { | ||||
| 					cv0 := load64(src, index0) | ||||
| 					cv1 := load64(src, index1) | ||||
|  | @ -1079,12 +1083,14 @@ searchDict: | |||
| 		index1 -= 1 | ||||
| 		cv = load64(src, s) | ||||
| 
 | ||||
| 		// index every second long in between. | ||||
| 		for index0 < index1 { | ||||
| 		// Index large values sparsely in between. | ||||
| 		// We do two starting from different offsets for speed. | ||||
| 		index2 := (index0 + index1 + 1) >> 1 | ||||
| 		for index2 < index1 { | ||||
| 			lTable[hash7(load64(src, index0), lTableBits)] = uint32(index0) | ||||
| 			lTable[hash7(load64(src, index1), lTableBits)] = uint32(index1) | ||||
| 			lTable[hash7(load64(src, index2), lTableBits)] = uint32(index2) | ||||
| 			index0 += 2 | ||||
| 			index1 -= 2 | ||||
| 			index2 += 2 | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										655
									
								
								vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										655
									
								
								vendor/github.com/klauspost/compress/s2/encodeblock_amd64.s
									
										
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										7
									
								
								vendor/github.com/klauspost/compress/s2/reader.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/klauspost/compress/s2/reader.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -147,6 +147,13 @@ type Reader struct { | |||
| 	ignoreCRC      bool | ||||
| } | ||||
| 
 | ||||
| // GetBufferCapacity returns the capacity of the internal buffer. | ||||
| // This might be useful to know when reusing the same reader in combination | ||||
| // with the lazy buffer option. | ||||
| func (r *Reader) GetBufferCapacity() int { | ||||
| 	return cap(r.buf) | ||||
| } | ||||
| 
 | ||||
| // ensureBufferSize will ensure that the buffer can take at least n bytes. | ||||
| // If false is returned the buffer exceeds maximum allowed size. | ||||
| func (r *Reader) ensureBufferSize(n int) bool { | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/klauspost/compress/s2/writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/klauspost/compress/s2/writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -771,7 +771,7 @@ func (w *Writer) closeIndex(idx bool) ([]byte, error) { | |||
| 	} | ||||
| 
 | ||||
| 	var index []byte | ||||
| 	if w.err(nil) == nil && w.writer != nil { | ||||
| 	if w.err(err) == nil && w.writer != nil { | ||||
| 		// Create index. | ||||
| 		if idx { | ||||
| 			compSize := int64(-1) | ||||
|  |  | |||
							
								
								
									
										1
									
								
								vendor/github.com/klauspost/cpuid/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/klauspost/cpuid/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -435,6 +435,7 @@ Exit Code 1 | |||
| | SYSCALL            | System-Call Extension (SCE): SYSCALL and SYSRET instructions.                                                                                                                      | | ||||
| | SYSEE              | SYSENTER and SYSEXIT instructions                                                                                                                                                  | | ||||
| | TBM                | AMD Trailing Bit Manipulation                                                                                                                                                      | | ||||
| | TDX_GUEST          | Intel Trust Domain Extensions Guest                                                                                                                                                | | ||||
| | TLB_FLUSH_NESTED   | AMD: Flushing includes all the nested translations for guest translations                                                                                                          | | ||||
| | TME                | Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE.                         | | ||||
| | TOPEXT             | TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX.                                                         | | ||||
|  |  | |||
							
								
								
									
										20
									
								
								vendor/github.com/klauspost/cpuid/v2/cpuid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/klauspost/cpuid/v2/cpuid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -226,6 +226,7 @@ const ( | |||
| 	SYSCALL                             // System-Call Extension (SCE): SYSCALL and SYSRET instructions. | ||||
| 	SYSEE                               // SYSENTER and SYSEXIT instructions | ||||
| 	TBM                                 // AMD Trailing Bit Manipulation | ||||
| 	TDX_GUEST                           // Intel Trust Domain Extensions Guest | ||||
| 	TLB_FLUSH_NESTED                    // AMD: Flushing includes all the nested translations for guest translations | ||||
| 	TME                                 // Intel Total Memory Encryption. The following MSRs are supported: IA32_TME_CAPABILITY, IA32_TME_ACTIVATE, IA32_TME_EXCLUDE_MASK, and IA32_TME_EXCLUDE_BASE. | ||||
| 	TOPEXT                              // TopologyExtensions: topology extensions support. Indicates support for CPUID Fn8000_001D_EAX_x[N:0]-CPUID Fn8000_001E_EDX. | ||||
|  | @ -1186,13 +1187,8 @@ func support() flagSet { | |||
| 		fs.setIf(edx&(1<<30) != 0, IA32_CORE_CAP) | ||||
| 		fs.setIf(edx&(1<<31) != 0, SPEC_CTRL_SSBD) | ||||
| 
 | ||||
| 		// CPUID.(EAX=7, ECX=1).EDX | ||||
| 		fs.setIf(edx&(1<<4) != 0, AVXVNNIINT8) | ||||
| 		fs.setIf(edx&(1<<5) != 0, AVXNECONVERT) | ||||
| 		fs.setIf(edx&(1<<14) != 0, PREFETCHI) | ||||
| 
 | ||||
| 		// CPUID.(EAX=7, ECX=1).EAX | ||||
| 		eax1, _, _, _ := cpuidex(7, 1) | ||||
| 		eax1, _, _, edx1 := cpuidex(7, 1) | ||||
| 		fs.setIf(fs.inSet(AVX) && eax1&(1<<4) != 0, AVXVNNI) | ||||
| 		fs.setIf(eax1&(1<<7) != 0, CMPCCXADD) | ||||
| 		fs.setIf(eax1&(1<<10) != 0, MOVSB_ZL) | ||||
|  | @ -1202,6 +1198,11 @@ func support() flagSet { | |||
| 		fs.setIf(eax1&(1<<23) != 0, AVXIFMA) | ||||
| 		fs.setIf(eax1&(1<<26) != 0, LAM) | ||||
| 
 | ||||
| 		// CPUID.(EAX=7, ECX=1).EDX | ||||
| 		fs.setIf(edx1&(1<<4) != 0, AVXVNNIINT8) | ||||
| 		fs.setIf(edx1&(1<<5) != 0, AVXNECONVERT) | ||||
| 		fs.setIf(edx1&(1<<14) != 0, PREFETCHI) | ||||
| 
 | ||||
| 		// Only detect AVX-512 features if XGETBV is supported | ||||
| 		if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { | ||||
| 			// Check for OS support | ||||
|  | @ -1393,6 +1394,13 @@ func support() flagSet { | |||
| 		fs.setIf((a>>24)&1 == 1, VMSA_REGPROT) | ||||
| 	} | ||||
| 
 | ||||
| 	if mfi >= 0x21 { | ||||
| 		// Intel Trusted Domain Extensions Guests have their own cpuid leaf (0x21). | ||||
| 		_, ebx, ecx, edx := cpuid(0x21) | ||||
| 		identity := string(valAsString(ebx, edx, ecx)) | ||||
| 		fs.setIf(identity == "IntelTDX    ", TDX_GUEST) | ||||
| 	} | ||||
| 
 | ||||
| 	return fs | ||||
| } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										99
									
								
								vendor/github.com/klauspost/cpuid/v2/featureid_string.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								vendor/github.com/klauspost/cpuid/v2/featureid_string.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -166,59 +166,60 @@ func _() { | |||
| 	_ = x[SYSCALL-156] | ||||
| 	_ = x[SYSEE-157] | ||||
| 	_ = x[TBM-158] | ||||
| 	_ = x[TLB_FLUSH_NESTED-159] | ||||
| 	_ = x[TME-160] | ||||
| 	_ = x[TOPEXT-161] | ||||
| 	_ = x[TSCRATEMSR-162] | ||||
| 	_ = x[TSXLDTRK-163] | ||||
| 	_ = x[VAES-164] | ||||
| 	_ = x[VMCBCLEAN-165] | ||||
| 	_ = x[VMPL-166] | ||||
| 	_ = x[VMSA_REGPROT-167] | ||||
| 	_ = x[VMX-168] | ||||
| 	_ = x[VPCLMULQDQ-169] | ||||
| 	_ = x[VTE-170] | ||||
| 	_ = x[WAITPKG-171] | ||||
| 	_ = x[WBNOINVD-172] | ||||
| 	_ = x[WRMSRNS-173] | ||||
| 	_ = x[X87-174] | ||||
| 	_ = x[XGETBV1-175] | ||||
| 	_ = x[XOP-176] | ||||
| 	_ = x[XSAVE-177] | ||||
| 	_ = x[XSAVEC-178] | ||||
| 	_ = x[XSAVEOPT-179] | ||||
| 	_ = x[XSAVES-180] | ||||
| 	_ = x[AESARM-181] | ||||
| 	_ = x[ARMCPUID-182] | ||||
| 	_ = x[ASIMD-183] | ||||
| 	_ = x[ASIMDDP-184] | ||||
| 	_ = x[ASIMDHP-185] | ||||
| 	_ = x[ASIMDRDM-186] | ||||
| 	_ = x[ATOMICS-187] | ||||
| 	_ = x[CRC32-188] | ||||
| 	_ = x[DCPOP-189] | ||||
| 	_ = x[EVTSTRM-190] | ||||
| 	_ = x[FCMA-191] | ||||
| 	_ = x[FP-192] | ||||
| 	_ = x[FPHP-193] | ||||
| 	_ = x[GPA-194] | ||||
| 	_ = x[JSCVT-195] | ||||
| 	_ = x[LRCPC-196] | ||||
| 	_ = x[PMULL-197] | ||||
| 	_ = x[SHA1-198] | ||||
| 	_ = x[SHA2-199] | ||||
| 	_ = x[SHA3-200] | ||||
| 	_ = x[SHA512-201] | ||||
| 	_ = x[SM3-202] | ||||
| 	_ = x[SM4-203] | ||||
| 	_ = x[SVE-204] | ||||
| 	_ = x[lastID-205] | ||||
| 	_ = x[TDX_GUEST-159] | ||||
| 	_ = x[TLB_FLUSH_NESTED-160] | ||||
| 	_ = x[TME-161] | ||||
| 	_ = x[TOPEXT-162] | ||||
| 	_ = x[TSCRATEMSR-163] | ||||
| 	_ = x[TSXLDTRK-164] | ||||
| 	_ = x[VAES-165] | ||||
| 	_ = x[VMCBCLEAN-166] | ||||
| 	_ = x[VMPL-167] | ||||
| 	_ = x[VMSA_REGPROT-168] | ||||
| 	_ = x[VMX-169] | ||||
| 	_ = x[VPCLMULQDQ-170] | ||||
| 	_ = x[VTE-171] | ||||
| 	_ = x[WAITPKG-172] | ||||
| 	_ = x[WBNOINVD-173] | ||||
| 	_ = x[WRMSRNS-174] | ||||
| 	_ = x[X87-175] | ||||
| 	_ = x[XGETBV1-176] | ||||
| 	_ = x[XOP-177] | ||||
| 	_ = x[XSAVE-178] | ||||
| 	_ = x[XSAVEC-179] | ||||
| 	_ = x[XSAVEOPT-180] | ||||
| 	_ = x[XSAVES-181] | ||||
| 	_ = x[AESARM-182] | ||||
| 	_ = x[ARMCPUID-183] | ||||
| 	_ = x[ASIMD-184] | ||||
| 	_ = x[ASIMDDP-185] | ||||
| 	_ = x[ASIMDHP-186] | ||||
| 	_ = x[ASIMDRDM-187] | ||||
| 	_ = x[ATOMICS-188] | ||||
| 	_ = x[CRC32-189] | ||||
| 	_ = x[DCPOP-190] | ||||
| 	_ = x[EVTSTRM-191] | ||||
| 	_ = x[FCMA-192] | ||||
| 	_ = x[FP-193] | ||||
| 	_ = x[FPHP-194] | ||||
| 	_ = x[GPA-195] | ||||
| 	_ = x[JSCVT-196] | ||||
| 	_ = x[LRCPC-197] | ||||
| 	_ = x[PMULL-198] | ||||
| 	_ = x[SHA1-199] | ||||
| 	_ = x[SHA2-200] | ||||
| 	_ = x[SHA3-201] | ||||
| 	_ = x[SHA512-202] | ||||
| 	_ = x[SM3-203] | ||||
| 	_ = x[SM4-204] | ||||
| 	_ = x[SVE-205] | ||||
| 	_ = x[lastID-206] | ||||
| 	_ = x[firstID-0] | ||||
| } | ||||
| 
 | ||||
| const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" | ||||
| const _FeatureID_name = "firstIDADXAESNIAMD3DNOWAMD3DNOWEXTAMXBF16AMXFP16AMXINT8AMXTILEAVXAVX2AVX512BF16AVX512BITALGAVX512BWAVX512CDAVX512DQAVX512ERAVX512FAVX512FP16AVX512IFMAAVX512PFAVX512VBMIAVX512VBMI2AVX512VLAVX512VNNIAVX512VP2INTERSECTAVX512VPOPCNTDQAVXIFMAAVXNECONVERTAVXSLOWAVXVNNIAVXVNNIINT8BHI_CTRLBMI1BMI2CETIBTCETSSCLDEMOTECLMULCLZEROCMOVCMPCCXADDCMPSB_SCADBS_SHORTCMPXCHG8CPBOOSTCPPCCX16EFER_LMSLE_UNSENQCMDERMSF16CFLUSH_L1DFMA3FMA4FP128FP256FSRMFXSRFXSROPTGFNIHLEHRESETHTTHWAHYBRID_CPUHYPERVISORIA32_ARCH_CAPIA32_CORE_CAPIBPBIBRSIBRS_PREFERREDIBRS_PROVIDES_SMPIBSIBSBRNTRGTIBSFETCHSAMIBSFFVIBSOPCNTIBSOPCNTEXTIBSOPSAMIBSRDWROPCNTIBSRIPINVALIDCHKIBS_FETCH_CTLXIBS_OPDATA4IBS_OPFUSEIBS_PREVENTHOSTIBS_ZEN4IDPRED_CTRLINT_WBINVDINVLPGBLAHFLAMLBRVIRTLZCNTMCAOVERFLOWMCDT_NOMCOMMITMD_CLEARMMXMMXEXTMOVBEMOVDIR64BMOVDIRIMOVSB_ZLMOVUMPXMSRIRCMSRLISTMSR_PAGEFLUSHNRIPSNXOSXSAVEPCONFIGPOPCNTPPINPREFETCHIPSFDRDPRURDRANDRDSEEDRDTSCPRRSBA_CTRLRTMRTM_ALWAYS_ABORTSERIALIZESEVSEV_64BITSEV_ALTERNATIVESEV_DEBUGSWAPSEV_ESSEV_RESTRICTEDSEV_SNPSGXSGXLCSHASMESME_COHERENTSPEC_CTRL_SSBDSRBDS_CTRLSSESSE2SSE3SSE4SSE42SSE4ASSSE3STIBPSTIBP_ALWAYSONSTOSB_SHORTSUCCORSVMSVMDASVMFBASIDSVMLSVMNPSVMPFSVMPFTSYSCALLSYSEETBMTDX_GUESTTLB_FLUSH_NESTEDTMETOPEXTTSCRATEMSRTSXLDTRKVAESVMCBCLEANVMPLVMSA_REGPROTVMXVPCLMULQDQVTEWAITPKGWBNOINVDWRMSRNSX87XGETBV1XOPXSAVEXSAVECXSAVEOPTXSAVESAESARMARMCPUIDASIMDASIMDDPASIMDHPASIMDRDMATOMICSCRC32DCPOPEVTSTRMFCMAFPFPHPGPAJSCVTLRCPCPMULLSHA1SHA2SHA3SHA512SM3SM4SVElastID" | ||||
| 
 | ||||
| var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 65, 69, 79, 91, 99, 107, 115, 123, 130, 140, 150, 158, 168, 179, 187, 197, 215, 230, 237, 249, 256, 263, 274, 282, 286, 290, 296, 301, 309, 314, 320, 324, 333, 351, 359, 366, 370, 374, 388, 394, 398, 402, 411, 415, 419, 424, 429, 433, 437, 444, 448, 451, 457, 460, 463, 473, 483, 496, 509, 513, 517, 531, 548, 551, 561, 572, 578, 586, 597, 605, 617, 633, 647, 658, 668, 683, 691, 702, 712, 719, 723, 726, 733, 738, 749, 756, 763, 771, 774, 780, 785, 794, 801, 809, 813, 816, 822, 829, 842, 847, 849, 856, 863, 869, 873, 882, 886, 891, 897, 903, 909, 919, 922, 938, 947, 950, 959, 974, 987, 993, 1007, 1014, 1017, 1022, 1025, 1028, 1040, 1054, 1064, 1067, 1071, 1075, 1079, 1084, 1089, 1094, 1099, 1113, 1124, 1130, 1133, 1138, 1147, 1151, 1156, 1161, 1167, 1174, 1179, 1182, 1198, 1201, 1207, 1217, 1225, 1229, 1238, 1242, 1254, 1257, 1267, 1270, 1277, 1285, 1292, 1295, 1302, 1305, 1310, 1316, 1324, 1330, 1336, 1344, 1349, 1356, 1363, 1371, 1378, 1383, 1388, 1395, 1399, 1401, 1405, 1408, 1413, 1418, 1423, 1427, 1431, 1435, 1441, 1444, 1447, 1450, 1456} | ||||
| var _FeatureID_index = [...]uint16{0, 7, 10, 15, 23, 34, 41, 48, 55, 62, 65, 69, 79, 91, 99, 107, 115, 123, 130, 140, 150, 158, 168, 179, 187, 197, 215, 230, 237, 249, 256, 263, 274, 282, 286, 290, 296, 301, 309, 314, 320, 324, 333, 351, 359, 366, 370, 374, 388, 394, 398, 402, 411, 415, 419, 424, 429, 433, 437, 444, 448, 451, 457, 460, 463, 473, 483, 496, 509, 513, 517, 531, 548, 551, 561, 572, 578, 586, 597, 605, 617, 633, 647, 658, 668, 683, 691, 702, 712, 719, 723, 726, 733, 738, 749, 756, 763, 771, 774, 780, 785, 794, 801, 809, 813, 816, 822, 829, 842, 847, 849, 856, 863, 869, 873, 882, 886, 891, 897, 903, 909, 919, 922, 938, 947, 950, 959, 974, 987, 993, 1007, 1014, 1017, 1022, 1025, 1028, 1040, 1054, 1064, 1067, 1071, 1075, 1079, 1084, 1089, 1094, 1099, 1113, 1124, 1130, 1133, 1138, 1147, 1151, 1156, 1161, 1167, 1174, 1179, 1182, 1191, 1207, 1210, 1216, 1226, 1234, 1238, 1247, 1251, 1263, 1266, 1276, 1279, 1286, 1294, 1301, 1304, 1311, 1314, 1319, 1325, 1333, 1339, 1345, 1353, 1358, 1365, 1372, 1380, 1387, 1392, 1397, 1404, 1408, 1410, 1414, 1417, 1422, 1427, 1432, 1436, 1440, 1444, 1450, 1453, 1456, 1459, 1465} | ||||
| 
 | ||||
| func (i FeatureID) String() string { | ||||
| 	if i < 0 || i >= FeatureID(len(_FeatureID_index)-1) { | ||||
|  |  | |||
							
								
								
									
										260
									
								
								vendor/github.com/minio/minio-go/v7/README_zh_CN.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										260
									
								
								vendor/github.com/minio/minio-go/v7/README_zh_CN.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,260 +0,0 @@ | |||
| # 适用于与Amazon S3兼容云存储的MinIO Go SDK [](https://slack.min.io) [](https://sourcegraph.com/github.com/minio/minio-go?badge) | ||||
| 
 | ||||
| MinIO Go Client SDK提供了简单的API来访问任何与Amazon S3兼容的对象存储服务。 | ||||
| 
 | ||||
| **支持的云存储:** | ||||
| 
 | ||||
| - AWS Signature Version 4 | ||||
|    - Amazon S3 | ||||
|    - MinIO | ||||
| 
 | ||||
| - AWS Signature Version 2 | ||||
|    - Google Cloud Storage (兼容模式) | ||||
|    - Openstack Swift + Swift3 middleware | ||||
|    - Ceph Object Gateway | ||||
|    - Riak CS | ||||
| 
 | ||||
| 本文我们将学习如何安装MinIO client SDK,连接到MinIO,并提供一下文件上传的示例。对于完整的API以及示例,请参考[Go Client API Reference](https://min.io/docs/minio/linux/developers/go/API.html)。 | ||||
| 
 | ||||
| 本文假设你已经有 [Go开发环境](https://golang.org/doc/install)。 | ||||
| 
 | ||||
| ## 从Github下载 | ||||
| ```sh | ||||
| go get -u github.com/minio/minio-go | ||||
| ``` | ||||
| 
 | ||||
| ## 初始化MinIO Client | ||||
| MinIO client需要以下4个参数来连接与Amazon S3兼容的对象存储。 | ||||
| 
 | ||||
| | 参数  | 描述| | ||||
| | :---         |     :---     | | ||||
| | endpoint   | 对象存储服务的URL   | | ||||
| | accessKeyID | Access key是唯一标识你的账户的用户ID。 | | ||||
| | secretAccessKey | Secret key是你账户的密码。 | | ||||
| | secure | true代表使用HTTPS | | ||||
| 
 | ||||
| 
 | ||||
| ```go | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"log" | ||||
| 
 | ||||
| 	"github.com/minio/minio-go/v7" | ||||
| 	"github.com/minio/minio-go/v7/pkg/credentials" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
| 	endpoint := "play.min.io" | ||||
| 	accessKeyID := "Q3AM3UQ867SPQQA43P2F" | ||||
| 	secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG" | ||||
| 	useSSL := true | ||||
| 
 | ||||
| 	// 初使化 minio client对象。 | ||||
| 	minioClient, err := minio.New(endpoint, &minio.Options{ | ||||
| 		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""), | ||||
| 		Secure: useSSL, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	log.Printf("%#v\n", minioClient) // minioClient初使化成功 | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## 示例-文件上传 | ||||
| 本示例连接到一个对象存储服务,创建一个存储桶并上传一个文件到存储桶中。 | ||||
| 
 | ||||
| 我们在本示例中使用运行在 [https://play.min.io](https://play.min.io) 上的MinIO服务,你可以用这个服务来开发和测试。示例中的访问凭据是公开的。 | ||||
| 
 | ||||
| ### FileUploader.go | ||||
| ```go | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"log" | ||||
| 
 | ||||
| 	"github.com/minio/minio-go/v7" | ||||
| 	"github.com/minio/minio-go/v7/pkg/credentials" | ||||
| ) | ||||
| 
 | ||||
| func main() { | ||||
| 	ctx := context.Background() | ||||
| 	endpoint := "play.min.io" | ||||
| 	accessKeyID := "Q3AM3UQ867SPQQA43P2F" | ||||
| 	secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG" | ||||
| 	useSSL := true | ||||
| 
 | ||||
| 	// 初使化 minio client对象。 | ||||
| 	minioClient, err := minio.New(endpoint, &minio.Options{ | ||||
| 		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""), | ||||
| 		Secure: useSSL, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	// 创建一个叫mymusic的存储桶。 | ||||
| 	bucketName := "mymusic" | ||||
| 	location := "us-east-1" | ||||
| 
 | ||||
| 	err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location}) | ||||
| 	if err != nil { | ||||
| 		// 检查存储桶是否已经存在。 | ||||
| 		exists, errBucketExists := minioClient.BucketExists(ctx, bucketName) | ||||
| 		if errBucketExists == nil && exists { | ||||
| 			log.Printf("We already own %s\n", bucketName) | ||||
| 		} else { | ||||
| 			log.Fatalln(err) | ||||
| 		} | ||||
| 	} else { | ||||
| 		log.Printf("Successfully created %s\n", bucketName) | ||||
| 	} | ||||
| 
 | ||||
| 	// 上传一个zip文件。 | ||||
| 	objectName := "golden-oldies.zip" | ||||
| 	filePath := "/tmp/golden-oldies.zip" | ||||
| 	contentType := "application/zip" | ||||
| 
 | ||||
| 	// 使用FPutObject上传一个zip文件。 | ||||
| 	n, err := minioClient.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType}) | ||||
| 	if err != nil { | ||||
| 		log.Fatalln(err) | ||||
| 	} | ||||
| 
 | ||||
| 	log.Printf("Successfully uploaded %s of size %d\n", objectName, n) | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ### 运行FileUploader | ||||
| ```sh | ||||
| go run file-uploader.go | ||||
| 2016/08/13 17:03:28 Successfully created mymusic | ||||
| 2016/08/13 17:03:40 Successfully uploaded golden-oldies.zip of size 16253413 | ||||
| 
 | ||||
| mc ls play/mymusic/ | ||||
| [2016-05-27 16:02:16 PDT]  17MiB golden-oldies.zip | ||||
| ``` | ||||
| 
 | ||||
| ## API文档 | ||||
| 完整的API文档在这里。 | ||||
| * [完整API文档](https://min.io/docs/minio/linux/developers/go/API.html) | ||||
| 
 | ||||
| ### API文档 : 操作存储桶 | ||||
| * [`MakeBucket`](https://min.io/docs/minio/linux/developers/go/API.html#MakeBucket) | ||||
| * [`ListBuckets`](https://min.io/docs/minio/linux/developers/go/API.html#ListBuckets) | ||||
| * [`BucketExists`](https://min.io/docs/minio/linux/developers/go/API.html#BucketExists) | ||||
| * [`RemoveBucket`](https://min.io/docs/minio/linux/developers/go/API.html#RemoveBucket) | ||||
| * [`ListObjects`](https://min.io/docs/minio/linux/developers/go/API.html#ListObjects) | ||||
| * [`ListIncompleteUploads`](https://min.io/docs/minio/linux/developers/go/API.html#ListIncompleteUploads) | ||||
| 
 | ||||
| ### API文档 : 存储桶策略 | ||||
| * [`SetBucketPolicy`](https://min.io/docs/minio/linux/developers/go/API.html#SetBucketPolicy) | ||||
| * [`GetBucketPolicy`](https://min.io/docs/minio/linux/developers/go/API.html#GetBucketPolicy) | ||||
| 
 | ||||
| ### API文档 : 存储桶通知 | ||||
| * [`SetBucketNotification`](https://min.io/docs/minio/linux/developers/go/API.html#SetBucketNotification) | ||||
| * [`GetBucketNotification`](https://min.io/docs/minio/linux/developers/go/API.html#GetBucketNotification) | ||||
| * [`RemoveAllBucketNotification`](https://min.io/docs/minio/linux/developers/go/API.html#RemoveAllBucketNotification) | ||||
| * [`ListenBucketNotification`](https://min.io/docs/minio/linux/developers/go/API.html#ListenBucketNotification) (MinIO 扩展) | ||||
| * [`ListenNotification`](https://min.io/docs/minio/linux/developers/go/API.html#ListenNotification) (MinIO 扩展) | ||||
| 
 | ||||
| ### API文档 : 操作文件对象 | ||||
| * [`FPutObject`](https://min.io/docs/minio/linux/developers/go/API.html#FPutObject) | ||||
| * [`FGetObject`](https://min.io/docs/minio/linux/developers/go/API.html#FPutObject) | ||||
| 
 | ||||
| ### API文档 : 操作对象 | ||||
| * [`GetObject`](https://min.io/docs/minio/linux/developers/go/API.html#GetObject) | ||||
| * [`PutObject`](https://min.io/docs/minio/linux/developers/go/API.html#PutObject) | ||||
| * [`PutObjectStreaming`](https://min.io/docs/minio/linux/developers/go/API.html#PutObjectStreaming) | ||||
| * [`StatObject`](https://min.io/docs/minio/linux/developers/go/API.html#StatObject) | ||||
| * [`CopyObject`](https://min.io/docs/minio/linux/developers/go/API.html#CopyObject) | ||||
| * [`RemoveObject`](https://min.io/docs/minio/linux/developers/go/API.html#RemoveObject) | ||||
| * [`RemoveObjects`](https://min.io/docs/minio/linux/developers/go/API.html#RemoveObjects) | ||||
| * [`RemoveIncompleteUpload`](https://min.io/docs/minio/linux/developers/go/API.html#RemoveIncompleteUpload) | ||||
| * [`SelectObjectContent`](https://min.io/docs/minio/linux/developers/go/API.html#SelectObjectContent) | ||||
| 
 | ||||
| ### API文档 : Presigned操作 | ||||
| * [`PresignedGetObject`](https://min.io/docs/minio/linux/developers/go/API.html#PresignedGetObject) | ||||
| * [`PresignedPutObject`](https://min.io/docs/minio/linux/developers/go/API.html#PresignedPutObject) | ||||
| * [`PresignedHeadObject`](https://min.io/docs/minio/linux/developers/go/API.html#PresignedHeadObject) | ||||
| * [`PresignedPostPolicy`](https://min.io/docs/minio/linux/developers/go/API.html#PresignedPostPolicy) | ||||
| 
 | ||||
| ### API文档 : 客户端自定义设置 | ||||
| * [`SetAppInfo`](https://min.io/docs/minio/linux/developers/go/API.html#SetAppInfo) | ||||
| * [`TraceOn`](https://min.io/docs/minio/linux/developers/go/API.html#TraceOn) | ||||
| * [`TraceOff`](https://min.io/docs/minio/linux/developers/go/API.html#TraceOff) | ||||
| 
 | ||||
| ## 完整示例 | ||||
| 
 | ||||
| ### 完整示例 : 操作存储桶 | ||||
| * [makebucket.go](https://github.com/minio/minio-go/blob/master/examples/s3/makebucket.go) | ||||
| * [listbuckets.go](https://github.com/minio/minio-go/blob/master/examples/s3/listbuckets.go) | ||||
| * [bucketexists.go](https://github.com/minio/minio-go/blob/master/examples/s3/bucketexists.go) | ||||
| * [removebucket.go](https://github.com/minio/minio-go/blob/master/examples/s3/removebucket.go) | ||||
| * [listobjects.go](https://github.com/minio/minio-go/blob/master/examples/s3/listobjects.go) | ||||
| * [listobjectsV2.go](https://github.com/minio/minio-go/blob/master/examples/s3/listobjectsV2.go) | ||||
| * [listincompleteuploads.go](https://github.com/minio/minio-go/blob/master/examples/s3/listincompleteuploads.go) | ||||
| 
 | ||||
| ### 完整示例 : 存储桶策略 | ||||
| * [setbucketpolicy.go](https://github.com/minio/minio-go/blob/master/examples/s3/setbucketpolicy.go) | ||||
| * [getbucketpolicy.go](https://github.com/minio/minio-go/blob/master/examples/s3/getbucketpolicy.go) | ||||
| * [listbucketpolicies.go](https://github.com/minio/minio-go/blob/master/examples/s3/listbucketpolicies.go) | ||||
| 
 | ||||
| ### 完整示例 : 存储桶生命周期 | ||||
| * [setbucketlifecycle.go](https://github.com/minio/minio-go/blob/master/examples/s3/setbucketlifecycle.go) | ||||
| * [getbucketlifecycle.go](https://github.com/minio/minio-go/blob/master/examples/s3/getbucketlifecycle.go) | ||||
| 
 | ||||
| ### 完整示例 : 存储桶加密 | ||||
| * [setbucketencryption.go](https://github.com/minio/minio-go/blob/master/examples/s3/setbucketencryption.go) | ||||
| * [getbucketencryption.go](https://github.com/minio/minio-go/blob/master/examples/s3/getbucketencryption.go) | ||||
| * [deletebucketencryption.go](https://github.com/minio/minio-go/blob/master/examples/s3/deletebucketencryption.go) | ||||
| 
 | ||||
| ### 完整示例 : 存储桶复制 | ||||
| * [setbucketreplication.go](https://github.com/minio/minio-go/blob/master/examples/s3/setbucketreplication.go) | ||||
| * [getbucketreplication.go](https://github.com/minio/minio-go/blob/master/examples/s3/getbucketreplication.go) | ||||
| * [removebucketreplication.go](https://github.com/minio/minio-go/blob/master/examples/s3/removebucketreplication.go) | ||||
| 
 | ||||
| ### 完整示例 : 存储桶通知 | ||||
| * [setbucketnotification.go](https://github.com/minio/minio-go/blob/master/examples/s3/setbucketnotification.go) | ||||
| * [getbucketnotification.go](https://github.com/minio/minio-go/blob/master/examples/s3/getbucketnotification.go) | ||||
| * [removeallbucketnotification.go](https://github.com/minio/minio-go/blob/master/examples/s3/removeallbucketnotification.go) | ||||
| * [listenbucketnotification.go](https://github.com/minio/minio-go/blob/master/examples/minio/listenbucketnotification.go) (MinIO扩展) | ||||
| * [listennotification.go](https://github.com/minio/minio-go/blob/master/examples/minio/listen-notification.go) (MinIO 扩展) | ||||
| 
 | ||||
| ### 完整示例 : 操作文件对象 | ||||
| * [fputobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/fputobject.go) | ||||
| * [fgetobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/fgetobject.go) | ||||
| * [fputobject-context.go](https://github.com/minio/minio-go/blob/master/examples/s3/fputobject-context.go) | ||||
| * [fgetobject-context.go](https://github.com/minio/minio-go/blob/master/examples/s3/fgetobject-context.go) | ||||
| 
 | ||||
| ### 完整示例 : 操作对象 | ||||
| * [putobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/putobject.go) | ||||
| * [getobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/getobject.go) | ||||
| * [putobject-context.go](https://github.com/minio/minio-go/blob/master/examples/s3/putobject-context.go) | ||||
| * [getobject-context.go](https://github.com/minio/minio-go/blob/master/examples/s3/getobject-context.go) | ||||
| * [statobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/statobject.go) | ||||
| * [copyobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/copyobject.go) | ||||
| * [removeobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/removeobject.go) | ||||
| * [removeincompleteupload.go](https://github.com/minio/minio-go/blob/master/examples/s3/removeincompleteupload.go) | ||||
| * [removeobjects.go](https://github.com/minio/minio-go/blob/master/examples/s3/removeobjects.go) | ||||
| 
 | ||||
| ### 完整示例 : 操作加密对象 | ||||
| * [put-encrypted-object.go](https://github.com/minio/minio-go/blob/master/examples/s3/put-encrypted-object.go) | ||||
| * [get-encrypted-object.go](https://github.com/minio/minio-go/blob/master/examples/s3/get-encrypted-object.go) | ||||
| * [fput-encrypted-object.go](https://github.com/minio/minio-go/blob/master/examples/s3/fputencrypted-object.go) | ||||
| 
 | ||||
| ### 完整示例 : Presigned操作 | ||||
| * [presignedgetobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/presignedgetobject.go) | ||||
| * [presignedputobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/presignedputobject.go) | ||||
| * [presignedheadobject.go](https://github.com/minio/minio-go/blob/master/examples/s3/presignedheadobject.go) | ||||
| * [presignedpostpolicy.go](https://github.com/minio/minio-go/blob/master/examples/s3/presignedpostpolicy.go) | ||||
| 
 | ||||
| ## 了解更多 | ||||
| * [完整文档](https://min.io/docs/minio/kubernetes/upstream/index.html) | ||||
| * [MinIO Go Client SDK API文档](https://min.io/docs/minio/linux/developers/go/API.html) | ||||
| 
 | ||||
| ## 贡献 | ||||
| [贡献指南](https://github.com/minio/minio-go/blob/master/docs/zh_CN/CONTRIBUTING.md) | ||||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-replication.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-bucket-replication.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -219,7 +219,7 @@ func (c *Client) ResetBucketReplicationOnTarget(ctx context.Context, bucketName | |||
| 
 | ||||
| // ResetBucketReplication kicks off replication of previously replicated objects if ExistingObjectReplication | ||||
| // is enabled in the replication config | ||||
| func (c *Client) resetBucketReplicationOnTarget(ctx context.Context, bucketName string, olderThan time.Duration, tgtArn string, resetID string) (rinfo replication.ResyncTargetsInfo, err error) { | ||||
| func (c *Client) resetBucketReplicationOnTarget(ctx context.Context, bucketName string, olderThan time.Duration, tgtArn, resetID string) (rinfo replication.ResyncTargetsInfo, err error) { | ||||
| 	// Input validation. | ||||
| 	if err = s3utils.CheckValidBucketName(bucketName); err != nil { | ||||
| 		return | ||||
|  |  | |||
							
								
								
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/api-compose-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/api-compose-object.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -286,8 +286,8 @@ func (c *Client) copyObjectDo(ctx context.Context, srcBucket, srcObject, destBuc | |||
| 	return objInfo, nil | ||||
| } | ||||
| 
 | ||||
| func (c *Client) copyObjectPartDo(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, uploadID string, | ||||
| 	partID int, startOffset int64, length int64, metadata map[string]string, | ||||
| func (c *Client) copyObjectPartDo(ctx context.Context, srcBucket, srcObject, destBucket, destObject, uploadID string, | ||||
| 	partID int, startOffset, length int64, metadata map[string]string, | ||||
| ) (p CompletePart, err error) { | ||||
| 	headers := make(http.Header) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-list.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-list.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -176,7 +176,7 @@ func (c *Client) listObjectsV2(ctx context.Context, bucketName string, opts List | |||
| // ?delimiter - A delimiter is a character you use to group keys. | ||||
| // ?start-after - Sets a marker to start listing lexically at this key onwards. | ||||
| // ?max-keys - Sets the maximum number of keys returned in the response body. | ||||
| func (c *Client) listObjectsV2Query(ctx context.Context, bucketName, objectPrefix, continuationToken string, fetchOwner, metadata bool, delimiter string, startAfter string, maxkeys int, headers http.Header) (ListBucketV2Result, error) { | ||||
| func (c *Client) listObjectsV2Query(ctx context.Context, bucketName, objectPrefix, continuationToken string, fetchOwner, metadata bool, delimiter, startAfter string, maxkeys int, headers http.Header) (ListBucketV2Result, error) { | ||||
| 	// Validate bucket name. | ||||
| 	if err := s3utils.CheckValidBucketName(bucketName); err != nil { | ||||
| 		return ListBucketV2Result{}, err | ||||
|  |  | |||
							
								
								
									
										12
									
								
								vendor/github.com/minio/minio-go/v7/api-presigned.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/minio/minio-go/v7/api-presigned.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -30,7 +30,7 @@ import ( | |||
| 
 | ||||
| // presignURL - Returns a presigned URL for an input 'method'. | ||||
| // Expires maximum is 7days - ie. 604800 and minimum is 1. | ||||
| func (c *Client) presignURL(ctx context.Context, method string, bucketName string, objectName string, expires time.Duration, reqParams url.Values, extraHeaders http.Header) (u *url.URL, err error) { | ||||
| func (c *Client) presignURL(ctx context.Context, method, bucketName, objectName string, expires time.Duration, reqParams url.Values, extraHeaders http.Header) (u *url.URL, err error) { | ||||
| 	// Input validation. | ||||
| 	if method == "" { | ||||
| 		return nil, errInvalidArgument("method cannot be empty.") | ||||
|  | @ -66,7 +66,7 @@ func (c *Client) presignURL(ctx context.Context, method string, bucketName strin | |||
| // data without credentials. URL can have a maximum expiry of | ||||
| // upto 7days or a minimum of 1sec. Additionally you can override | ||||
| // a set of response headers using the query parameters. | ||||
| func (c *Client) PresignedGetObject(ctx context.Context, bucketName string, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| func (c *Client) PresignedGetObject(ctx context.Context, bucketName, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| 	if err = s3utils.CheckValidObjectName(objectName); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -77,7 +77,7 @@ func (c *Client) PresignedGetObject(ctx context.Context, bucketName string, obje | |||
| // object metadata without credentials. URL can have a maximum expiry | ||||
| // of upto 7days or a minimum of 1sec. Additionally you can override | ||||
| // a set of response headers using the query parameters. | ||||
| func (c *Client) PresignedHeadObject(ctx context.Context, bucketName string, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| func (c *Client) PresignedHeadObject(ctx context.Context, bucketName, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| 	if err = s3utils.CheckValidObjectName(objectName); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -87,7 +87,7 @@ func (c *Client) PresignedHeadObject(ctx context.Context, bucketName string, obj | |||
| // PresignedPutObject - Returns a presigned URL to upload an object | ||||
| // without credentials. URL can have a maximum expiry of upto 7days | ||||
| // or a minimum of 1sec. | ||||
| func (c *Client) PresignedPutObject(ctx context.Context, bucketName string, objectName string, expires time.Duration) (u *url.URL, err error) { | ||||
| func (c *Client) PresignedPutObject(ctx context.Context, bucketName, objectName string, expires time.Duration) (u *url.URL, err error) { | ||||
| 	if err = s3utils.CheckValidObjectName(objectName); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | @ -101,14 +101,14 @@ func (c *Client) PresignedPutObject(ctx context.Context, bucketName string, obje | |||
| // | ||||
| // FIXME: The extra header parameter should be included in Presign() in the next | ||||
| // major version bump, and this function should then be deprecated. | ||||
| func (c *Client) PresignHeader(ctx context.Context, method string, bucketName string, objectName string, expires time.Duration, reqParams url.Values, extraHeaders http.Header) (u *url.URL, err error) { | ||||
| func (c *Client) PresignHeader(ctx context.Context, method, bucketName, objectName string, expires time.Duration, reqParams url.Values, extraHeaders http.Header) (u *url.URL, err error) { | ||||
| 	return c.presignURL(ctx, method, bucketName, objectName, expires, reqParams, extraHeaders) | ||||
| } | ||||
| 
 | ||||
| // Presign - returns a presigned URL for any http method of your choice along | ||||
| // with custom request params and extra signed headers. URL can have a maximum | ||||
| // expiry of upto 7days or a minimum of 1sec. | ||||
| func (c *Client) Presign(ctx context.Context, method string, bucketName string, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| func (c *Client) Presign(ctx context.Context, method, bucketName, objectName string, expires time.Duration, reqParams url.Values) (u *url.URL, err error) { | ||||
| 	return c.presignURL(ctx, method, bucketName, objectName, expires, reqParams, nil) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-put-bucket.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-put-bucket.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -42,7 +42,7 @@ func (c *Client) makeBucket(ctx context.Context, bucketName string, opts MakeBuc | |||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func (c *Client) doMakeBucket(ctx context.Context, bucketName string, location string, objectLockEnabled bool) (err error) { | ||||
| func (c *Client) doMakeBucket(ctx context.Context, bucketName, location string, objectLockEnabled bool) (err error) { | ||||
| 	defer func() { | ||||
| 		// Save the location into cache on a successful makeBucket response. | ||||
| 		if err == nil { | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object-common.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/api-put-object-common.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -68,7 +68,7 @@ func isReadAt(reader io.Reader) (ok bool) { | |||
| //	maxPartsCount - 10000 | ||||
| //	minPartSize - 16MiB | ||||
| //	maxMultipartPutObjectSize - 5TiB | ||||
| func OptimalPartInfo(objectSize int64, configuredPartSize uint64) (totalPartsCount int, partSize int64, lastPartSize int64, err error) { | ||||
| func OptimalPartInfo(objectSize int64, configuredPartSize uint64) (totalPartsCount int, partSize, lastPartSize int64, err error) { | ||||
| 	// object size is '-1' set it to 5TiB. | ||||
| 	var unknownSize bool | ||||
| 	if objectSize == -1 { | ||||
|  |  | |||
							
								
								
									
										15
									
								
								vendor/github.com/minio/minio-go/v7/api.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/minio/minio-go/v7/api.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,6 +1,6 @@ | |||
| /* | ||||
|  * MinIO Go Library for Amazon S3 Compatible Cloud Storage | ||||
|  * Copyright 2015-2018 MinIO, Inc. | ||||
|  * Copyright 2015-2023 MinIO, Inc. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  | @ -29,6 +29,7 @@ import ( | |||
| 	"net" | ||||
| 	"net/http" | ||||
| 	"net/http/cookiejar" | ||||
| 	"net/http/httptrace" | ||||
| 	"net/http/httputil" | ||||
| 	"net/url" | ||||
| 	"os" | ||||
|  | @ -69,6 +70,7 @@ type Client struct { | |||
| 
 | ||||
| 	// Needs allocation. | ||||
| 	httpClient     *http.Client | ||||
| 	httpTrace      *httptrace.ClientTrace | ||||
| 	bucketLocCache *bucketLocationCache | ||||
| 
 | ||||
| 	// Advanced functionality. | ||||
|  | @ -103,6 +105,7 @@ type Options struct { | |||
| 	Creds        *credentials.Credentials | ||||
| 	Secure       bool | ||||
| 	Transport    http.RoundTripper | ||||
| 	Trace        *httptrace.ClientTrace | ||||
| 	Region       string | ||||
| 	BucketLookup BucketLookupType | ||||
| 
 | ||||
|  | @ -124,7 +127,7 @@ type Options struct { | |||
| // Global constants. | ||||
| const ( | ||||
| 	libraryName    = "minio-go" | ||||
| 	libraryVersion = "v7.0.60" | ||||
| 	libraryVersion = "v7.0.61" | ||||
| ) | ||||
| 
 | ||||
| // User Agent should always following the below style. | ||||
|  | @ -229,6 +232,8 @@ func privateNew(endpoint string, opts *Options) (*Client, error) { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	clnt.httpTrace = opts.Trace | ||||
| 
 | ||||
| 	// Instantiate http client and bucket location cache. | ||||
| 	clnt.httpClient = &http.Client{ | ||||
| 		Jar:       jar, | ||||
|  | @ -278,7 +283,7 @@ func privateNew(endpoint string, opts *Options) (*Client, error) { | |||
| } | ||||
| 
 | ||||
| // SetAppInfo - add application details to user agent. | ||||
| func (c *Client) SetAppInfo(appName string, appVersion string) { | ||||
| func (c *Client) SetAppInfo(appName, appVersion string) { | ||||
| 	// if app name and version not set, we do not set a new user agent. | ||||
| 	if appName != "" && appVersion != "" { | ||||
| 		c.appInfo.appName = appName | ||||
|  | @ -771,6 +776,10 @@ func (c *Client) newRequest(ctx context.Context, method string, metadata request | |||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	if c.httpTrace != nil { | ||||
| 		ctx = httptrace.WithClientTrace(ctx, c.httpTrace) | ||||
| 	} | ||||
| 
 | ||||
| 	// Initialize a new HTTP request for the method. | ||||
| 	req, err = http.NewRequestWithContext(ctx, method, targetURL.String(), nil) | ||||
| 	if err != nil { | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/bucket-cache.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/bucket-cache.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -58,7 +58,7 @@ func (r *bucketLocationCache) Get(bucketName string) (location string, ok bool) | |||
| } | ||||
| 
 | ||||
| // Set - Will persist a value into cache. | ||||
| func (r *bucketLocationCache) Set(bucketName string, location string) { | ||||
| func (r *bucketLocationCache) Set(bucketName, location string) { | ||||
| 	r.Lock() | ||||
| 	defer r.Unlock() | ||||
| 	r.items[bucketName] = location | ||||
|  |  | |||
							
								
								
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/core.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/core.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -62,7 +62,7 @@ func (c Core) CopyObject(ctx context.Context, sourceBucket, sourceObject, destBu | |||
| 
 | ||||
| // CopyObjectPart - creates a part in a multipart upload by copying (a | ||||
| // part of) an existing object. | ||||
| func (c Core) CopyObjectPart(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, uploadID string, | ||||
| func (c Core) CopyObjectPart(ctx context.Context, srcBucket, srcObject, destBucket, destObject, uploadID string, | ||||
| 	partID int, startOffset, length int64, metadata map[string]string, | ||||
| ) (p CompletePart, err error) { | ||||
| 	return c.copyObjectPartDo(ctx, srcBucket, srcObject, destBucket, destObject, uploadID, | ||||
|  | @ -115,7 +115,7 @@ func (c Core) PutObjectPart(ctx context.Context, bucket, object, uploadID string | |||
| } | ||||
| 
 | ||||
| // ListObjectParts - List uploaded parts of an incomplete upload.x | ||||
| func (c Core) ListObjectParts(ctx context.Context, bucket, object, uploadID string, partNumberMarker int, maxParts int) (result ListObjectPartsResult, err error) { | ||||
| func (c Core) ListObjectParts(ctx context.Context, bucket, object, uploadID string, partNumberMarker, maxParts int) (result ListObjectPartsResult, err error) { | ||||
| 	return c.listObjectPartsQuery(ctx, bucket, object, uploadID, partNumberMarker, maxParts) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										8
									
								
								vendor/github.com/minio/minio-go/v7/functional_tests.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/minio/minio-go/v7/functional_tests.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -141,7 +141,7 @@ func cleanEmptyEntries(fields log.Fields) log.Fields { | |||
| } | ||||
| 
 | ||||
| // log successful test runs | ||||
| func successLogger(testName string, function string, args map[string]interface{}, startTime time.Time) *log.Entry { | ||||
| func successLogger(testName, function string, args map[string]interface{}, startTime time.Time) *log.Entry { | ||||
| 	// calculate the test case duration | ||||
| 	duration := time.Since(startTime) | ||||
| 	// log with the fields as per mint | ||||
|  | @ -151,7 +151,7 @@ func successLogger(testName string, function string, args map[string]interface{} | |||
| 
 | ||||
| // As few of the features are not available in Gateway(s) currently, Check if err value is NotImplemented, | ||||
| // and log as NA in that case and continue execution. Otherwise log as failure and return | ||||
| func logError(testName string, function string, args map[string]interface{}, startTime time.Time, alert string, message string, err error) { | ||||
| func logError(testName, function string, args map[string]interface{}, startTime time.Time, alert, message string, err error) { | ||||
| 	// If server returns NotImplemented we assume it is gateway mode and hence log it as info and move on to next tests | ||||
| 	// Special case for ComposeObject API as it is implemented on client side and adds specific error details like `Error in upload-part-copy` in | ||||
| 	// addition to NotImplemented error returned from server | ||||
|  | @ -165,7 +165,7 @@ func logError(testName string, function string, args map[string]interface{}, sta | |||
| } | ||||
| 
 | ||||
| // log failed test runs | ||||
| func failureLog(testName string, function string, args map[string]interface{}, startTime time.Time, alert string, message string, err error) *log.Entry { | ||||
| func failureLog(testName, function string, args map[string]interface{}, startTime time.Time, alert, message string, err error) *log.Entry { | ||||
| 	// calculate the test case duration | ||||
| 	duration := time.Since(startTime) | ||||
| 	var fields log.Fields | ||||
|  | @ -185,7 +185,7 @@ func failureLog(testName string, function string, args map[string]interface{}, s | |||
| } | ||||
| 
 | ||||
| // log not applicable test runs | ||||
| func ignoredLog(testName string, function string, args map[string]interface{}, startTime time.Time, alert string) *log.Entry { | ||||
| func ignoredLog(testName, function string, args map[string]interface{}, startTime time.Time, alert string) *log.Entry { | ||||
| 	// calculate the test case duration | ||||
| 	duration := time.Since(startTime) | ||||
| 	// log with the fields as per mint | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/file_aws_credentials.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/file_aws_credentials.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -64,7 +64,7 @@ type FileAWSCredentials struct { | |||
| 
 | ||||
| // NewFileAWSCredentials returns a pointer to a new Credentials object | ||||
| // wrapping the Profile file provider. | ||||
| func NewFileAWSCredentials(filename string, profile string) *Credentials { | ||||
| func NewFileAWSCredentials(filename, profile string) *Credentials { | ||||
| 	return New(&FileAWSCredentials{ | ||||
| 		Filename: filename, | ||||
| 		Profile:  profile, | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/file_minio_client.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/file_minio_client.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -49,7 +49,7 @@ type FileMinioClient struct { | |||
| 
 | ||||
| // NewFileMinioClient returns a pointer to a new Credentials object | ||||
| // wrapping the Alias file provider. | ||||
| func NewFileMinioClient(filename string, alias string) *Credentials { | ||||
| func NewFileMinioClient(filename, alias string) *Credentials { | ||||
| 	return New(&FileMinioClient{ | ||||
| 		Filename: filename, | ||||
| 		Alias:    alias, | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/iam_aws.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/credentials/iam_aws.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -227,7 +227,7 @@ func listRoleNames(client *http.Client, u *url.URL, token string) ([]string, err | |||
| 	return credsList, nil | ||||
| } | ||||
| 
 | ||||
| func getEcsTaskCredentials(client *http.Client, endpoint string, token string) (ec2RoleCredRespBody, error) { | ||||
| func getEcsTaskCredentials(client *http.Client, endpoint, token string) (ec2RoleCredRespBody, error) { | ||||
| 	req, err := http.NewRequest(http.MethodGet, endpoint, nil) | ||||
| 	if err != nil { | ||||
| 		return ec2RoleCredRespBody{}, err | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/pkg/signer/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -35,7 +35,7 @@ func sum256(data []byte) []byte { | |||
| } | ||||
| 
 | ||||
| // sumHMAC calculate hmac between two input byte array. | ||||
| func sumHMAC(key []byte, data []byte) []byte { | ||||
| func sumHMAC(key, data []byte) []byte { | ||||
| 	hash := hmac.New(sha256.New, key) | ||||
| 	hash.Write(data) | ||||
| 	return hash.Sum(nil) | ||||
|  |  | |||
							
								
								
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/post-policy.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/minio/minio-go/v7/post-policy.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -241,7 +241,7 @@ func (p *PostPolicy) SetSuccessStatusAction(status string) error { | |||
| 
 | ||||
| // SetUserMetadata - Set user metadata as a key/value couple. | ||||
| // Can be retrieved through a HEAD request or an event. | ||||
| func (p *PostPolicy) SetUserMetadata(key string, value string) error { | ||||
| func (p *PostPolicy) SetUserMetadata(key, value string) error { | ||||
| 	if strings.TrimSpace(key) == "" || key == "" { | ||||
| 		return errInvalidArgument("Key is empty") | ||||
| 	} | ||||
|  | @ -283,7 +283,7 @@ func (p *PostPolicy) SetEncryption(sse encrypt.ServerSide) { | |||
| 
 | ||||
| // SetUserData - Set user data as a key/value couple. | ||||
| // Can be retrieved through a HEAD request or an event. | ||||
| func (p *PostPolicy) SetUserData(key string, value string) error { | ||||
| func (p *PostPolicy) SetUserData(key, value string) error { | ||||
| 	if key == "" { | ||||
| 		return errInvalidArgument("Key is empty") | ||||
| 	} | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/retry-continous.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/retry-continous.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -20,7 +20,7 @@ package minio | |||
| import "time" | ||||
| 
 | ||||
| // newRetryTimerContinous creates a timer with exponentially increasing delays forever. | ||||
| func (c *Client) newRetryTimerContinous(unit time.Duration, cap time.Duration, jitter float64, doneCh chan struct{}) <-chan int { | ||||
| func (c *Client) newRetryTimerContinous(unit, cap time.Duration, jitter float64, doneCh chan struct{}) <-chan int { | ||||
| 	attemptCh := make(chan int) | ||||
| 
 | ||||
| 	// normalize jitter to the range [0, 1.0] | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/retry.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/retry.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -45,7 +45,7 @@ var DefaultRetryCap = time.Second | |||
| 
 | ||||
| // newRetryTimer creates a timer with exponentially increasing | ||||
| // delays until the maximum retry attempts are reached. | ||||
| func (c *Client) newRetryTimer(ctx context.Context, maxRetry int, unit time.Duration, cap time.Duration, jitter float64) <-chan int { | ||||
| func (c *Client) newRetryTimer(ctx context.Context, maxRetry int, unit, cap time.Duration, jitter float64) <-chan int { | ||||
| 	attemptCh := make(chan int) | ||||
| 
 | ||||
| 	// computes the exponential backoff duration according to | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/minio/minio-go/v7/utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -255,7 +255,7 @@ func parseRFC7231Time(lastModified string) (time.Time, error) { | |||
| 
 | ||||
| // ToObjectInfo converts http header values into ObjectInfo type, | ||||
| // extracts metadata and fills in all the necessary fields in ObjectInfo. | ||||
| func ToObjectInfo(bucketName string, objectName string, h http.Header) (ObjectInfo, error) { | ||||
| func ToObjectInfo(bucketName, objectName string, h http.Header) (ObjectInfo, error) { | ||||
| 	var err error | ||||
| 	// Trim off the odd double quotes from ETag in the beginning and end. | ||||
| 	etag := trimEtag(h.Get("ETag")) | ||||
|  |  | |||
							
								
								
									
										36
									
								
								vendor/github.com/sirupsen/logrus/writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/github.com/sirupsen/logrus/writer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -4,6 +4,7 @@ import ( | |||
| 	"bufio" | ||||
| 	"io" | ||||
| 	"runtime" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| // Writer at INFO level. See WriterLevel for details. | ||||
|  | @ -20,15 +21,18 @@ func (logger *Logger) WriterLevel(level Level) *io.PipeWriter { | |||
| 	return NewEntry(logger).WriterLevel(level) | ||||
| } | ||||
| 
 | ||||
| // Writer returns an io.Writer that writes to the logger at the info log level | ||||
| func (entry *Entry) Writer() *io.PipeWriter { | ||||
| 	return entry.WriterLevel(InfoLevel) | ||||
| } | ||||
| 
 | ||||
| // WriterLevel returns an io.Writer that writes to the logger at the given log level | ||||
| func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { | ||||
| 	reader, writer := io.Pipe() | ||||
| 
 | ||||
| 	var printFunc func(args ...interface{}) | ||||
| 
 | ||||
| 	// Determine which log function to use based on the specified log level | ||||
| 	switch level { | ||||
| 	case TraceLevel: | ||||
| 		printFunc = entry.Trace | ||||
|  | @ -48,23 +52,51 @@ func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { | |||
| 		printFunc = entry.Print | ||||
| 	} | ||||
| 
 | ||||
| 	// Start a new goroutine to scan the input and write it to the logger using the specified print function. | ||||
| 	// It splits the input into chunks of up to 64KB to avoid buffer overflows. | ||||
| 	go entry.writerScanner(reader, printFunc) | ||||
| 
 | ||||
| 	// Set a finalizer function to close the writer when it is garbage collected | ||||
| 	runtime.SetFinalizer(writer, writerFinalizer) | ||||
| 
 | ||||
| 	return writer | ||||
| } | ||||
| 
 | ||||
| // writerScanner scans the input from the reader and writes it to the logger | ||||
| func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { | ||||
| 	scanner := bufio.NewScanner(reader) | ||||
| 	for scanner.Scan() { | ||||
| 		printFunc(scanner.Text()) | ||||
| 
 | ||||
| 	// Set the buffer size to the maximum token size to avoid buffer overflows | ||||
| 	scanner.Buffer(make([]byte, bufio.MaxScanTokenSize), bufio.MaxScanTokenSize) | ||||
| 
 | ||||
| 	// Define a split function to split the input into chunks of up to 64KB | ||||
| 	chunkSize := bufio.MaxScanTokenSize // 64KB | ||||
| 	splitFunc := func(data []byte, atEOF bool) (int, []byte, error) { | ||||
| 		if len(data) >= chunkSize { | ||||
| 			return chunkSize, data[:chunkSize], nil | ||||
| 		} | ||||
| 
 | ||||
| 		return bufio.ScanLines(data, atEOF) | ||||
| 	} | ||||
| 
 | ||||
| 	// Use the custom split function to split the input | ||||
| 	scanner.Split(splitFunc) | ||||
| 
 | ||||
| 	// Scan the input and write it to the logger using the specified print function | ||||
| 	for scanner.Scan() { | ||||
| 		printFunc(strings.TrimRight(scanner.Text(), "\r\n")) | ||||
| 	} | ||||
| 
 | ||||
| 	// If there was an error while scanning the input, log an error | ||||
| 	if err := scanner.Err(); err != nil { | ||||
| 		entry.Errorf("Error while reading from Writer: %s", err) | ||||
| 	} | ||||
| 
 | ||||
| 	// Close the reader when we are done | ||||
| 	reader.Close() | ||||
| } | ||||
| 
 | ||||
| // WriterFinalizer is a finalizer function that closes then given writer when it is garbage collected | ||||
| func writerFinalizer(writer *io.PipeWriter) { | ||||
| 	writer.Close() | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue