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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrRequestTimeTooSkewed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSignatureDoesNotMatch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMethodNotAllowed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPart 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidPartOrder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAuthorizationHeaderMalformed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedPOSTRequest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSignatureVersionNotSupported 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrBucketNotEmpty 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrStorageFull 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrObjectExistsAsPrefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAllAccessDisabled 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedPolicy 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-31 11:04:51 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrMissingFields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingCredTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrCredMalformed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRegion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidRequestVersion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingSignHeadersTag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrPolicyAlreadyExpired 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedDate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMalformedExpires 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrAuthHeaderEmpty 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrDateHeaderMissing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrExpiredPresignRequest 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrMissingDateHeader 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQuerySignatureAlgo 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInvalidQueryParams 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add new error codes here.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Extended errors.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInsufficientReadResources 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInsufficientWriteResources 
							 
						 
					
						
							
								
									
										
										
										
											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" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "Argument maxUploads 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" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +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" , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-19 05:48:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Description :     "Argument maxParts must be an integer between 1 and 10000." , 
							 
						 
					
						
							
								
									
										
										
										
											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-04-21 08:23:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrInsufficientReadResources :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InternalError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "We cannot satisfy sufficient read resources requested at this moment, please try again." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrInsufficientWriteResources :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InternalError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "We cannot satisfy sufficient write resources requested at this moment, please try again." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											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" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The requested range cannot be satisfied." , 
							 
						 
					
						
							
								
									
										
										
										
											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" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										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" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The specified multipart upload 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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrNotImplemented :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										Code :            "NotImplemented" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										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-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" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The request signature we calculated does not match the signature you provided." , 
							 
						 
					
						
							
								
									
										
										
										
											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-04-19 17:42:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrStorageFull :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "StorageFull" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Storage backend has reached its minimum free disk threshold. Please delete few objects to proceed." , 
							 
						 
					
						
							
								
									
										
										
										
											2015-10-18 10:17:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrObjectExistsAsPrefix :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-03 07:23:28 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Code :            "ObjectExistsAsPrefix" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "An object already exists as your prefix, choose a different prefix to proceed." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										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-03-10 18:24:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add your error structure here.
 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-11 19:23:15 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}