2023-03-12 16:00:57 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// GoToSocial 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Copyright (C) GoToSocial Authors admin@gotosocial.org 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// SPDX-License-Identifier: AGPL-3.0-or-later 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 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/>. 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-22 16:05:26 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									apiAttachment ,  errWithCode  :=  m . processor . Media ( ) . Create ( c . Request . Context ( ) ,  authed . Account ,  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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}