2015-02-15 16:48:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
									
										
										
										
											2015-07-25 08:51:40 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 *  Minio  Cloud  Storage ,  ( C )  2015  Minio ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-15 16:48:15 +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 . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 15:52:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								package  main  
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"encoding/xml" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 15:52:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// APIError structure
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  APIError  struct  {  
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Code            string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Description     string 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									HTTPStatusCode  int 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 15:52:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// APIErrorResponse - error response format
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  APIErrorResponse  struct  {  
						 
					
						
							
								
									
										
										
										
											2015-12-10 07:38:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									XMLName     xml . Name  ` xml:"Error" json:"-" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Code        string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Message     string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Key         string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BucketName  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Resource    string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									RequestID   string  ` xml:"RequestId" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									HostID      string  ` xml:"HostId" ` 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// APIErrorCode type of error status.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  APIErrorCode  int  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-23 07:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Error codes, non exhaustive list - http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html
  
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  (  
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNone  APIErrorCode  =  iota 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAccessDenied 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrBadDigest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrBucketAlreadyExists 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrEntityTooSmall 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrEntityTooLarge 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrIncompleteBody 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInternalError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidAccessKeyID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidBucketName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidDigest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRange 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidMaxKeys 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidMaxUploads 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidMaxParts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPartNumberMarker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRequestBody 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidCopySource 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidCopyDest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPolicyDocument 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedXML 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingContentLength 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingContentMD5 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingRequestBodyError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrNoSuchBucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrNoSuchBucketPolicy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrNoSuchKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrNoSuchUpload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrNotImplemented 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-28 16:18:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrPreconditionFailed 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrRequestTimeTooSkewed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSignatureDoesNotMatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMethodNotAllowed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPart 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPartOrder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAuthorizationHeaderMalformed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedPOSTRequest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSignatureVersionNotSupported 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrBucketNotEmpty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAllAccessDisabled 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedPolicy 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 11:04:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMissingFields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingCredTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrCredMalformed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRegion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRequestVersion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignHeadersTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrPolicyAlreadyExpired 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedDate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedExpires 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAuthHeaderEmpty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrExpiredPresignRequest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingDateHeader 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQuerySignatureAlgo 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQueryParams 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 18:19:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrBucketAlreadyOwnedByYou 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add new error codes here.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:04:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// S3 extended errors.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrContentSHA256Mismatch 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-21 03:40:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:04:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add new extended error codes here.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Minio extended errors.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrReadQuorum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrWriteQuorum 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrStorageFull 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrObjectExistsAsDirectory 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 16:53:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrPolicyNesting 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 08:11:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidObjectName 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:04:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add new extended error codes here.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Please open a https://github.com/minio/minio/issues before adding
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// new error codes here.
 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-23 07:28:13 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// error code to APIError structure, these fields carry respective
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// descriptions for all the error responses.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  errorCodeResponse  =  map [ APIErrorCode ] APIError {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidCopyDest :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-27 19:04:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "InvalidRequest" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "This copy request is illegal because it is trying to copy an object to itself." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidCopySource :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-27 19:04:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Copy Source must mention the source bucket and key: sourcebucket/sourcekey." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidRequestBody :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-27 19:04:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Body shouldn't be set for this request." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidMaxUploads :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "Argument max-uploads must be an integer between 0 and 2147483647" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidMaxKeys :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "Argument maxKeys must be an integer between 0 and 2147483647" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidMaxParts :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "Argument max-parts must be an integer between 0 and 2147483647" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidPartNumberMarker :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "Argument partNumberMarker must be an integer." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-17 08:22:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidPolicyDocument :  { 
							 
						 
					
						
							
								
									
										
										
											
												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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "InvalidPolicyDocument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The content of the form does not meet the conditions specified in the policy document." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrAccessDenied :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "Access Denied." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrBadDigest :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "BadDigest" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-06 08:43:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The Content-Md5 you specified did not match what we received." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrBucketAlreadyExists :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "BucketAlreadyExists" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The requested bucket name is not available." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusConflict , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrEntityTooSmall :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "EntityTooSmall" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Your proposed upload is smaller than the minimum allowed object size." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrEntityTooLarge :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "EntityTooLarge" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Your proposed upload exceeds the maximum allowed object size." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrIncompleteBody :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "IncompleteBody" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "You did not provide the number of bytes specified by the Content-Length HTTP header." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInternalError :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InternalError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "We encountered an internal error, please try again." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidAccessKeyID :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidAccessKeyID" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The access key ID you provided does not exist in our records." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidBucketName :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidBucketName" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The specified bucket is not valid." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidDigest :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidDigest" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-06 08:43:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The Content-Md5 you specified is not valid." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidRange :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidRange" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The requested range is not satisfiable" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusRequestedRangeNotSatisfiable , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMalformedXML :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "MalformedXML" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The XML you provided was not well-formed or did not validate against our published schema." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMissingContentLength :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "MissingContentLength" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "You must provide the Content-Length HTTP header." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusLengthRequired , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMissingContentMD5 :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-06 08:43:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "MissingContentMD5" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Missing required header for this request: Content-Md5." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMissingRequestBodyError :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "MissingRequestBodyError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Request body is empty." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusLengthRequired , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNoSuchBucket :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "NoSuchBucket" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The specified bucket does not exist" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusNotFound , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNoSuchBucketPolicy :  { 
							 
						 
					
						
							
								
									
										
										
											
												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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "NoSuchBucketPolicy" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The specified bucket does not have a bucket policy." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusNotFound , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNoSuchKey :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "NoSuchKey" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The specified key does not exist." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusNotFound , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNoSuchUpload :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "NoSuchUpload" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-23 08:05:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The specified multipart upload does not exist. The upload ID may be invalid, or the upload may have been aborted or completed." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusNotFound , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNotImplemented :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "NotImplemented" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:06:30 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "A header you provided implies functionality that is not implemented" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusNotImplemented , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-28 16:18:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrPreconditionFailed :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "PreconditionFailed" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 03:13:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "At least one of the pre-conditions you specified did not hold" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-28 16:18:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusPreconditionFailed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrRequestTimeTooSkewed :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "RequestTimeTooSkewed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The difference between the request time and the server's time is too large." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSignatureDoesNotMatch :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "SignatureDoesNotMatch" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-22 03:10:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The request signature we calculated does not match the signature you provided. Check your key and signing method." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMethodNotAllowed :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-27 18:54:49 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "MethodNotAllowed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The specified method is not allowed against this resource." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusMethodNotAllowed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidPart :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-08 13:43:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidPart" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "One or more of the specified parts could not be found." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-08 13:43:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidPartOrder :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-08 17:02:51 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidPartOrder" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The list of parts was not in ascending order. The parts list must be specified in order by part number." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrAuthorizationHeaderMalformed :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "AuthorizationHeaderMalformed" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-24 05:39:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The authorization header is malformed; the region is wrong; expecting 'us-east-1'." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMalformedPOSTRequest :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-02 14:51:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "MalformedPOSTRequest" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The body of your POST request is not well-formed multipart/form-data." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 07:38:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSignatureVersionNotSupported :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-10 07:38:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "InvalidRequest" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-02 14:51:17 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrBucketNotEmpty :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-17 02:26:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "BucketNotEmpty" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The bucket you tried to delete is not empty." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusConflict , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrAllAccessDisabled :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-17 10:50:36 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "AllAccessDisabled" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "All access to this bucket has been disabled." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMalformedPolicy :  { 
							 
						 
					
						
							
								
									
										
										
											
												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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "MalformedPolicy" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 11:04:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "Policy has invalid resource." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingFields :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "MissingFields" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Missing fields in request." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingCredTag :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidRequest" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Missing Credential field for this request." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrCredMalformed :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "CredentialMalformed" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Credential field malformed does not follow accessKeyID/credScope." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedDate :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "MalformedDate" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Invalid date format header, expected to be in ISO8601, RFC1123 or RFC1123Z time format." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRegion :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidRegion" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Region does not match." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidService :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Service scope should be of value 's3'." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRequestVersion :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Request scope should be of value 'aws4_request'." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignTag :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Signature header missing Signature field." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignHeadersTag :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Signature header missing SignedHeaders field." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrPolicyAlreadyExpired :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Invalid according to Policy: Policy expired." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedExpires :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "MalformedExpires" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Malformed expires header, expected non-zero number." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAuthHeaderEmpty :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidArgument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Authorization header is invalid -- one and only one ' ' (space) required." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingDateHeader :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "AWS authentication requires a valid Date or x-amz-date header" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQuerySignatureAlgo :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AuthorizationQueryParametersError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "X-Amz-Algorithm only supports \"AWS4-HMAC-SHA256\"." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrExpiredPresignRequest :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Request has expired." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQueryParams :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AuthorizationQueryParametersError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Query-string authentication version 4 requires the X-Amz-Algorithm, X-Amz-Credential, X-Amz-Signature, X-Amz-Date, X-Amz-SignedHeaders, and X-Amz-Expires parameters." , 
							 
						 
					
						
							
								
									
										
										
											
												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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 18:19:04 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrBucketAlreadyOwnedByYou :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "BucketAlreadyOwnedByYou" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Your previous request to create the named bucket succeeded and you already own it." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusConflict , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:04:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/// S3 extensions.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrContentSHA256Mismatch :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XAmzContentSHA256Mismatch" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The provided 'x-amz-content-sha256' header does not match what was computed." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/// Minio extensions.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrStorageFull :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioStorageFull" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Storage backend has reached its minimum free disk threshold. Please delete few objects to proceed." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrObjectExistsAsDirectory :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioObjectExistsAsDirectory" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Object name already exists as a directory." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusConflict , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrReadQuorum :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioReadQuorum" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Multiple disk failures, unable to reconstruct data." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrWriteQuorum :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioWriteQuorum" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Multiple disks failures, unable to write data." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-09 16:53:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrPolicyNesting :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioPolicyNesting" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Policy nesting conflict has occurred." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusConflict , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 08:11:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInvalidObjectName :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "XMinioInvalidObjectName" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Object name contains unsupported characters. Unsupported characters are `^*|\\\"" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add your error structure here.
 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// toAPIErrorCode - Converts embedded errors. Convenience
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// function written to handle all cases where we have known types of
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// errors returned by underlying layers.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  toAPIErrorCode ( err  error )  ( apiErr  APIErrorCode )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  ==  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ErrNone 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Verify if the underlying error is signature mismatch.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-05 16:04:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  err  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  errSignatureMismatch : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrSignatureDoesNotMatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  errContentSHA256Mismatch : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrContentSHA256Mismatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  apiErr  !=  ErrNone  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// If there was a match in the above switch case.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  apiErr 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  err . ( type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  StorageFull : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrStorageFull 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  BadDigest : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrBadDigest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  IncompleteBody : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrIncompleteBody 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:36:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  ObjectExistsAsDirectory : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrObjectExistsAsDirectory 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  BucketNameInvalid : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrInvalidBucketName 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  BucketNotFound : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrNoSuchBucket 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  BucketNotEmpty : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrBucketNotEmpty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  BucketExists : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrBucketAlreadyOwnedByYou 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  ObjectNotFound : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrNoSuchKey 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  ObjectNameInvalid : 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-10 08:11:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiErr  =  ErrInvalidObjectName 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  InvalidUploadID : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrNoSuchUpload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  InvalidPart : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrInvalidPart 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  InsufficientWriteQuorum : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrWriteQuorum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  InsufficientReadQuorum : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrReadQuorum 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-09 03:06:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									case  PartTooSmall : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrEntityTooSmall 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-06 11:24:29 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiErr  =  ErrInternalError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  apiErr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// getAPIError provides API Error for input API error code.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  getAPIError ( code  APIErrorCode )  APIError  {  
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  errorCodeResponse [ code ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-24 08:46:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// getErrorResponse gets in standard error and resource value and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// provides a encodable populated response values
  
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  getAPIErrorResponse ( err  APIError ,  resource  string )  APIErrorResponse  {  
						 
					
						
							
								
									
										
										
										
											2015-09-19 15:52:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									var  data  =  APIErrorResponse { } 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									data . Code  =  err . Code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									data . Message  =  err . Description 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 14:00:45 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  resource  !=  ""  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data . Resource  =  resource 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// TODO implement this in future
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-06 13:07:19 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									data . RequestID  =  "3L137" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									data . HostID  =  "3L137" 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}