2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GoToSocial 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 12:43:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   Copyright  ( C )  2021 - 2023  GoToSocial  Authors  admin @ gotosocial . org 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   it  under  the  terms  of  the  GNU  Affero  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   the  Free  Software  Foundation ,  either  version  3  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GNU  Affero  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   You  should  have  received  a  copy  of  the  GNU  Affero  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   along  with  this  program .   If  not ,  see  < http : //www.gnu.org/licenses/>. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  media  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"errors" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/gin-gonic/gin" 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apimodel  "github.com/superseriousbusiness/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apiutil  "github.com/superseriousbusiness/gotosocial/internal/api/util" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/config" 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/gtserror" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/oauth" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// MediaCreatePOSTHandler swagger:operation POST /api/{api_version}/media mediaCreate  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Upload a new media attachment.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	---  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	tags:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	- media  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	consumes:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	- multipart/form-data  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	produces:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	- application/json  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	parameters:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		name: api_version  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		type: string  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		in: path  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		description: Version of the API to use. Must be either `v1` or `v2`.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		required: true  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		name: description  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		in: formData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		description: >-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			Image or media description to use as alt-text on the attachment.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			This is very useful for users of screenreaders!  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			May or may not be required, depending on your instance settings.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		type: string  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		name: focus  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		in: formData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		description: >-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			Focus of the media file.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			If present, it should be in the form of two comma-separated floats between -1 and 1.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			For example: `-0.5,0.25`.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		type: string  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		default: "0,0"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	-  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		name: file  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		in: formData  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		description: The media attachment to upload.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		type: file  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		required: true  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	security:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//	- OAuth2 Bearer:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		- write:media  
						 
					
						
							
								
									
										
										
										
											2021-08-02 19:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//  
						 
					
						
							
								
									
										
										
										
											2022-09-28 18:30:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//	responses:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		'200':  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			description: The newly-created media attachment.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			schema:  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//				"$ref": "#/definitions/attachment"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		'400':  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			description: bad request  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		'401':  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			description: unauthorized  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		'422':  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			description: unprocessable  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//		'500':  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//			description: internal server error  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func  ( m  * Module )  MediaCreatePOSTHandler ( c  * gin . Context )  {  
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apiVersion  :=  c . Param ( APIVersionKey ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  apiVersion  !=  APIv1  &&  apiVersion  !=  APIv2  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										err  :=  errors . New ( "api version must be one of v1 or v2 for this path" ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  gtserror . NewErrorNotFound ( err ,  err . Error ( ) ) ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									authed ,  err  :=  oauth . Authed ( c ,  true ,  true ,  true ,  true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  gtserror . NewErrorUnauthorized ( err ,  err . Error ( ) ) ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-11 17:50:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  _ ,  err  :=  apiutil . NegotiateAccept ( c ,  apiutil . JSONAcceptHeaders ... ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  gtserror . NewErrorNotAcceptable ( err ,  err . Error ( ) ) ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									form  :=  & apimodel . AttachmentRequest { } 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-10 16:29:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  err  :=  c . ShouldBind ( & form ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  gtserror . NewErrorBadRequest ( err ,  err . Error ( ) ) ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  err  :=  validateCreateMedia ( form ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  gtserror . NewErrorBadRequest ( err ,  err . Error ( ) ) ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									apiAttachment ,  errWithCode  :=  m . processor . MediaCreate ( c . Request . Context ( ) ,  authed ,  form ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-21 17:52:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  errWithCode  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-02 14:08:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										apiutil . ErrorHandler ( c ,  errWithCode ,  m . processor . InstanceGetV1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  apiVersion  ==  APIv2  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-22 12:48:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// the mastodon v2 media API specifies that the URL should be null 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// and that the client should call /api/v1/media/:id to get the URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// so even though we have the URL already, remove it now to comply 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// with the api 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										apiAttachment . URL  =  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-04 15:24:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									c . JSON ( http . StatusOK ,  apiAttachment ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-02 13:10:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  validateCreateMedia ( form  * apimodel . AttachmentRequest )  error  {  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// check there actually is a file attached and it's not size 0 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  form . File  ==  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  errors . New ( "no attachment given" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 13:41:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									maxVideoSize  :=  config . GetMediaVideoMaxSize ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									maxImageSize  :=  config . GetMediaImageMaxSize ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									minDescriptionChars  :=  config . GetMediaDescriptionMinChars ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									maxDescriptionChars  :=  config . GetMediaDescriptionMaxChars ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// a very superficial check to see if no size limits are exceeded 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// we still don't actually know which media types we're dealing with but the other handlers will go into more detail there 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									maxSize  :=  maxVideoSize 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  maxImageSize  >  maxSize  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										maxSize  =  maxImageSize 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  form . File . Size  >  int64 ( maxSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  fmt . Errorf ( "file size limit exceeded: limit is %d bytes but attachment was %d bytes" ,  maxSize ,  form . File . Size ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-03 14:38:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  length  :=  len ( [ ] rune ( form . Description ) ) ;  length  >  maxDescriptionChars  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  fmt . Errorf ( "image description length must be between %d and %d characters (inclusive), but provided image description was %d chars" ,  minDescriptionChars ,  maxDescriptionChars ,  length ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}