2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
									
										
										
										
											2019-04-10 02:39:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  MinIO  Cloud  Storage ,  ( C )  2015 ,  2016 ,  2017 ,  2018  MinIO ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Licensed  under  the  Apache  License ,  Version  2.0  ( the  "License" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  you  may  not  use  this  file  except  in  compliance  with  the  License . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  may  obtain  a  copy  of  the  License  at 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *      http : //www.apache.org/licenses/LICENSE-2.0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Unless  required  by  applicable  law  or  agreed  to  in  writing ,  software 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  distributed  under  the  License  is  distributed  on  an  "AS IS"  BASIS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  WITHOUT  WARRANTIES  OR  CONDITIONS  OF  ANY  KIND ,  either  express  or  implied . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  See  the  License  for  the  specific  language  governing  permissions  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  limitations  under  the  License . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 07:23:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								package  cmd  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"io" 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-21 04:06:53 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"path" 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Converts underlying storage error. Convenience function written to
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// handle all cases where we have known types of errors returned by
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// underlying storage layer.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  toObjectErr ( err  error ,  params  ... string )  error  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  err  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  errVolumeNotFound : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  1  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  BucketNotFound { Bucket :  params [ 0 ] } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-05 16:35:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errVolumeNotEmpty : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  1  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  BucketNotEmpty { Bucket :  params [ 0 ] } 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-05 16:35:21 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errVolumeExists : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  1  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  BucketExists { Bucket :  params [ 0 ] } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  errDiskFull : 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										err  =  StorageFull { } 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-02 22:09:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  errTooManyOpenFiles : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										err  =  SlowDown { } 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-21 07:09:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errFileAccessDenied : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  =  PrefixAccessDenied { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-21 04:06:53 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  errFileParentIsFile : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  =  ParentIsObject { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-12-14 13:58:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  errIsNotRegular : 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  ObjectExistsAsDirectory { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 07:19:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errFileNotFound : 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-24 05:54:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										switch  len ( params )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  ObjectNotFound { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-24 05:54:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  =  InvalidUploadID { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Bucket :    params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :    params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												UploadID :  params [ 2 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-12 03:55:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errFileNameTooLong : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											err  =  ObjectNameInvalid { 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-12 03:55:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-23 00:05:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errDataTooLarge : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  =  ObjectTooLarge { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-25 14:47:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errDataTooSmall : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  len ( params )  >=  2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err  =  ObjectTooSmall { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Bucket :  params [ 0 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object :  params [ 1 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 07:34:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errXLReadQuorum : 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										err  =  InsufficientReadQuorum { } 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 07:34:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  errXLWriteQuorum : 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										err  =  InsufficientWriteQuorum { } 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									case  io . ErrUnexpectedEOF ,  io . ErrShortWrite : 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-26 00:39:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										err  =  IncompleteBody { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:52:38 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// SignatureDoesNotMatch - when content md5 does not match with what was sent from client.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  SignatureDoesNotMatch  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  SignatureDoesNotMatch )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "The request signature we calculated does not match the signature you provided. Check your key and signing method." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// StorageFull storage ran out of space.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  StorageFull  struct { }  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  StorageFull )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Storage reached its minimum free disk threshold." 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-02 22:09:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// SlowDown  too many file descriptors open or backend busy .
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  SlowDown  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  SlowDown )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Please reduce your request rate" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// InsufficientReadQuorum storage cannot satisfy quorum for read operation.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  InsufficientReadQuorum  struct { }  
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  InsufficientReadQuorum )  Error ( )  string  {  
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  "Storage resources are insufficient for the read operation." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// InsufficientWriteQuorum storage cannot satisfy quorum for write operation.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  InsufficientWriteQuorum  struct { }  
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  InsufficientWriteQuorum )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Storage resources are insufficient for the write operation." 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// GenericError - generic object layer error.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  GenericError  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Bucket  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Object  string 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-18 10:17:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// BucketNotFound bucket does not exist.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  BucketNotFound  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketNotFound )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Bucket not found: "  +  e . Bucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-09 05:53:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// BucketAlreadyExists the requested bucket name is not available.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  BucketAlreadyExists  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketAlreadyExists )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 02:26:00 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// BucketAlreadyOwnedByYou already owned by you.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  BucketAlreadyOwnedByYou  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketAlreadyOwnedByYou )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Bucket already owned by you: "  +  e . Bucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// BucketNotEmpty bucket is not empty.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  BucketNotEmpty  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-17 02:26:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketNotEmpty )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Bucket not empty: "  +  e . Bucket 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// ObjectNotFound object does not exist.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  ObjectNotFound  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectNotFound )  Error ( )  string  {  
						 
					
						
							
								
									
										
										
										
											2015-10-17 02:26:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  "Object not found: "  +  e . Bucket  +  "#"  +  e . Object 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-28 07:44:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ObjectAlreadyExists object already exists.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ObjectAlreadyExists  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectAlreadyExists )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Object: "  +  e . Bucket  +  "#"  +  e . Object  +  " already exists" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// ObjectExistsAsDirectory object already exists as a directory.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ObjectExistsAsDirectory  GenericError  
						 
					
						
							
								
									
										
										
										
											2016-02-03 07:23:28 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectExistsAsDirectory )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Object exists on : "  +  e . Bucket  +  " as directory "  +  e . Object 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-21 07:09:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								//PrefixAccessDenied object access is denied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  PrefixAccessDenied  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  PrefixAccessDenied )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Prefix access is denied: "  +  e . Bucket  +  "/"  +  e . Object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-21 04:06:53 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ParentIsObject object access is denied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ParentIsObject  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  ParentIsObject )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Parent is object "  +  e . Bucket  +  "/"  +  path . Dir ( e . Object ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// BucketExists bucket exists.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  BucketExists  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-06-24 02:44:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketExists )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Bucket exists: "  +  e . Bucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-11 16:29:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// UnsupportedDelimiter - unsupported delimiter.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  UnsupportedDelimiter  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Delimiter  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  UnsupportedDelimiter )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "delimiter '%s' is not supported. Only '/' is supported" ,  e . Delimiter ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// InvalidUploadIDKeyCombination - invalid upload id and key marker combination.
  
						 
					
						
							
								
									
										
										
										
											2016-04-11 16:29:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  InvalidUploadIDKeyCombination  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UploadIDMarker ,  KeyMarker  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidUploadIDKeyCombination )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "Invalid combination of uploadID marker '%s' and marker '%s'" ,  e . UploadIDMarker ,  e . KeyMarker ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// InvalidMarkerPrefixCombination - invalid marker and prefix combination.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  InvalidMarkerPrefixCombination  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Marker ,  Prefix  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidMarkerPrefixCombination )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "Invalid combination of marker '%s' and prefix '%s'" ,  e . Marker ,  e . Prefix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												accessPolicy: Implement Put, Get, Delete access policy.
This patch implements Get,Put,Delete bucket policies
Supporting - http://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html
Currently supports following actions.
   "*":                             true,
   "s3:*":                          true,
   "s3:GetObject":                  true,
   "s3:ListBucket":                 true,
   "s3:PutObject":                  true,
   "s3:CreateBucket":               true,
   "s3:GetBucketLocation":          true,
   "s3:DeleteBucket":               true,
   "s3:DeleteObject":               true,
   "s3:AbortMultipartUpload":       true,
   "s3:ListBucketMultipartUploads": true,
   "s3:ListMultipartUploadParts":   true,
following conditions for "StringEquals" and "StringNotEquals"
   "s3:prefix", "s3:max-keys"
											 
										 
										
											2016-02-04 08:46:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// BucketPolicyNotFound - no bucket policy found.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  BucketPolicyNotFound  GenericError  
						 
					
						
							
								
									
										
										
											
												accessPolicy: Implement Put, Get, Delete access policy.
This patch implements Get,Put,Delete bucket policies
Supporting - http://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html
Currently supports following actions.
   "*":                             true,
   "s3:*":                          true,
   "s3:GetObject":                  true,
   "s3:ListBucket":                 true,
   "s3:PutObject":                  true,
   "s3:CreateBucket":               true,
   "s3:GetBucketLocation":          true,
   "s3:DeleteBucket":               true,
   "s3:DeleteObject":               true,
   "s3:AbortMultipartUpload":       true,
   "s3:ListBucketMultipartUploads": true,
   "s3:ListMultipartUploadParts":   true,
following conditions for "StringEquals" and "StringNotEquals"
   "s3:prefix", "s3:max-keys"
											 
										 
										
											2016-02-04 08:46:56 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketPolicyNotFound )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "No bucket policy found for bucket: "  +  e . Bucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/// Bucket related errors.
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// BucketNameInvalid - bucketname provided is invalid.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  BucketNameInvalid  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Return string an error formatted as the given text.
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  BucketNameInvalid )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Bucket name invalid: "  +  e . Bucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/// Object related errors.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// ObjectNameInvalid - object name provided is invalid.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  ObjectNameInvalid  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Return string an error formatted as the given text.
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectNameInvalid )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Object name invalid: "  +  e . Bucket  +  "#"  +  e . Object 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-06 09:49:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// AllAccessDisabled All access to this object has been disabled
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  AllAccessDisabled  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Return string an error formatted as the given text.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  AllAccessDisabled )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "All access to this object has been disabled" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// IncompleteBody You did not provide the number of bytes specified by the Content-Length HTTP header.
  
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  IncompleteBody  GenericError  
						 
					
						
							
								
									
										
										
										
											2015-07-09 11:18:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Return string an error formatted as the given text.
  
						 
					
						
							
								
									
										
										
										
											2015-07-09 11:18:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( e  IncompleteBody )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  e . Bucket  +  "#"  +  e . Object  +  "has incomplete body" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-09 08:22:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// InvalidRange - invalid range typed error.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  InvalidRange  struct  {  
						 
					
						
							
								
									
										
										
										
											2017-11-14 16:25:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									OffsetBegin   int64 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									OffsetEnd     int64 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ResourceSize  int64 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-09 08:22:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidRange )  Error ( )  string  {  
						 
					
						
							
								
									
										
										
										
											2017-11-14 16:25:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "The requested range \"bytes %d-%d/%d\" is not satisfiable." ,  e . OffsetBegin ,  e . OffsetEnd ,  e . ResourceSize ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-09 08:22:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-23 00:05:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// ObjectTooLarge error returned when the size of the object > max object size allowed (5G) per request.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ObjectTooLarge  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectTooLarge )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "size of the object greater than what is allowed(5G)" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-25 14:47:03 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// ObjectTooSmall error returned when the size of the object < what is expected.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  ObjectTooSmall  GenericError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  ObjectTooSmall )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "size of the object less than what is expected" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-01 02:29:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// OperationTimedOut - a timeout occurred.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  OperationTimedOut  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Path  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  OperationTimedOut )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Operation timed out: "  +  e . Path 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-28 10:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/// Multipart related errors.
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-11 16:29:18 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// MalformedUploadID malformed upload id.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  MalformedUploadID  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UploadID  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  MalformedUploadID )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Malformed upload id "  +  e . UploadID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// InvalidUploadID invalid upload id.
  
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  InvalidUploadID  struct  {  
						 
					
						
							
								
									
										
										
										
											2019-04-24 05:54:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Bucket    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Object    string 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-01 07:30:02 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									UploadID  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidUploadID )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Invalid upload id "  +  e . UploadID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-07-09 07:54:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-14 10:29:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// InvalidPart One or more of the specified parts could not be found
  
						 
					
						
							
								
									
										
										
										
											2018-08-15 09:35:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type  InvalidPart  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PartNumber  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ExpETag     string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GotETag     string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-07-14 10:29:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidPart )  Error ( )  string  {  
						 
					
						
							
								
									
										
										
										
											2018-08-15 09:35:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "Specified part could not be found. PartNumber %d, Expected %s, got %s" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										e . PartNumber ,  e . ExpETag ,  e . GotETag ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-14 10:29:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:06:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// PartTooSmall - error if part size is less than 5MB.
  
						 
					
						
							
								
									
										
										
										
											2016-06-29 05:51:49 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  PartTooSmall  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PartSize    int64 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PartNumber  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PartETag    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:06:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  PartTooSmall )  Error ( )  string  {  
						 
					
						
							
								
									
										
										
										
											2017-10-28 06:07:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  fmt . Sprintf ( "Part size for %d should be at least 5MB" ,  e . PartNumber ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:06:05 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-08-18 02:36:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-13 07:42:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// PartTooBig returned if size of part is bigger than the allowed limit.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  PartTooBig  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  PartTooBig )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Part size bigger than the allowed limit" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 12:34:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// InvalidETag error returned when the etag has changed on disk
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  InvalidETag  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  InvalidETag )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "etag of the object has changed" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-18 02:36:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// NotImplemented If a feature is not implemented
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  NotImplemented  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  NotImplemented )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Not Implemented" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-11-17 08:42:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 07:14:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// UnsupportedMetadata - unsupported metadata
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  UnsupportedMetadata  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  UnsupportedMetadata )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Unsupported headers in Metadata" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-29 05:14:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// BackendDown is returned for network errors or if the gateway's backend is down.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  BackendDown  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  BackendDown )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "Backend down" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-14 16:25:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// isErrObjectNotFound - Check if error type is ObjectNotFound.
  
						 
					
						
							
								
									
										
										
										
											2016-11-17 08:42:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  isErrObjectNotFound ( err  error )  bool  {  
						 
					
						
							
								
									
										
										
										
											2018-08-07 01:26:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_ ,  ok  :=  err . ( ObjectNotFound ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ok 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-17 08:42:23 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-03-07 04:38:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// PreConditionFailed - Check if copy precondition failed
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  PreConditionFailed  struct { }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  PreConditionFailed )  Error ( )  string  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  "At least one of the pre-conditions you specified did not hold" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  isErrPreconditionFailed ( err  error )  bool  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_ ,  ok  :=  err . ( PreConditionFailed ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ok 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}