@@ -325,7 +325,7 @@ pub mod gemini_api_types {
325325 use serde_json:: { Value , json} ;
326326
327327 use crate :: completion:: GetTokenUsage ;
328- use crate :: message:: { DocumentSourceKind , ImageMediaType , MimeType } ;
328+ use crate :: message:: { DocumentSourceKind , ImageMediaType , MessageError , MimeType } ;
329329 use crate :: {
330330 OneOrMany ,
331331 completion:: CompletionError ,
@@ -824,18 +824,26 @@ pub mod gemini_api_types {
824824 additional_params,
825825 ..
826826 } ) => {
827- let media_type = media_type. ok_or ( message:: MessageError :: ConversionError (
828- "Media type for video is required for Gemini" . to_string ( ) ,
829- ) ) ?;
827+ // let media_type = media_type.ok_or(message::MessageError::ConversionError(
828+ // "Media type for video is required for Gemini".to_string(),
829+ // ))?;
830+
831+ // let mime_type = media_type.to_mime_type().to_owned();
830832
831- let mime_type = media_type. to_mime_type ( ) . to_owned ( ) ;
833+ let mime_type = media_type. map ( |media_ty| media_ty . to_mime_type ( ) . to_string ( ) ) ;
832834
833835 let part = match data {
834836 DocumentSourceKind :: Url ( file_uri) => PartKind :: FileData ( FileData {
835- mime_type : Some ( mime_type ) ,
837+ mime_type,
836838 file_uri,
837839 } ) ,
838840 DocumentSourceKind :: Base64 ( data) => {
841+ let Some ( mime_type) = mime_type else {
842+ return Err ( MessageError :: ConversionError (
843+ "A media type is expected for base64 encoded strings"
844+ . to_string ( ) ,
845+ ) ) ;
846+ } ;
839847 PartKind :: InlineData ( Blob { mime_type, data } )
840848 }
841849 DocumentSourceKind :: Raw ( _) => {
0 commit comments