Skip to content

Commit 13f878e

Browse files
fix(rig-970): file URLs should be able to accept empty media type (Gemini) (#872)
1 parent f366e81 commit 13f878e

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

rig-core/src/providers/gemini/completion.rs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -744,11 +744,9 @@ pub mod gemini_api_types {
744744
message::UserContent::Document(message::Document {
745745
data, media_type, ..
746746
}) => {
747-
let media_type = media_type.ok_or(message::MessageError::ConversionError(
748-
"Media type for document is required for Gemini".to_string(),
749-
))?;
750-
751-
if !media_type.is_code() {
747+
if let Some(ref media_type) = media_type
748+
&& !media_type.is_code()
749+
{
752750
let mime_type = media_type.to_mime_type().to_string();
753751

754752
let part = match data {
@@ -786,18 +784,19 @@ pub mod gemini_api_types {
786784
message::UserContent::Audio(message::Audio {
787785
data, media_type, ..
788786
}) => {
789-
let media_type = media_type.ok_or(message::MessageError::ConversionError(
790-
"Media type for audio is required for Gemini".to_string(),
791-
))?;
792-
793-
let mime_type = media_type.to_mime_type().to_string();
787+
let mime_type = media_type.map(|x| x.to_mime_type().to_string());
794788

795789
let part = match data {
796790
DocumentSourceKind::Base64(data) => {
791+
let Some(mime_type) = mime_type else {
792+
return Err(MessageError::ConversionError(
793+
"Mime type is required for Base64 encoded strings".to_string(),
794+
));
795+
};
797796
PartKind::InlineData(Blob { data, mime_type })
798797
}
799798
DocumentSourceKind::Url(file_uri) => PartKind::FileData(FileData {
800-
mime_type: Some(mime_type),
799+
mime_type,
801800
file_uri,
802801
}),
803802
DocumentSourceKind::Raw(_) => {
@@ -824,12 +823,6 @@ pub mod gemini_api_types {
824823
additional_params,
825824
..
826825
}) => {
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();
832-
833826
let mime_type = media_type.map(|media_ty| media_ty.to_mime_type().to_string());
834827

835828
let part = match data {

0 commit comments

Comments
 (0)