@@ -49,16 +49,16 @@ pub fn determine_title(image_info: &manifest_types::ExtractedImageInfo) -> Optio
4949 parts. push ( manifest_label. as_str ( ) ) ;
5050 }
5151
52- if let Some ( metadata_title) = & image_info. metadata_title {
53- if !parts. contains ( & metadata_title. as_str ( ) ) {
54- parts . push ( metadata_title . as_str ( ) ) ;
55- }
52+ if let Some ( metadata_title) = & image_info. metadata_title
53+ && !parts. contains ( & metadata_title. as_str ( ) )
54+ {
55+ parts . push ( metadata_title . as_str ( ) ) ;
5656 }
5757
58- if let Some ( canvas_label) = & image_info. canvas_label {
59- if !parts. contains ( & canvas_label. as_str ( ) ) {
60- parts . push ( canvas_label . as_str ( ) ) ;
61- }
58+ if let Some ( canvas_label) = & image_info. canvas_label
59+ && !parts. contains ( & canvas_label. as_str ( ) )
60+ {
61+ parts . push ( canvas_label . as_str ( ) ) ;
6262 }
6363
6464 if parts. is_empty ( ) {
@@ -98,48 +98,47 @@ impl Dezoomer for IIIF {
9898
9999 // First, try to determine what type of IIIF content this is by doing a quick parse
100100 // to check the "type" field without generating warnings
101- if let Ok ( quick_check) = serde_json:: from_slice :: < serde_json:: Value > ( contents) {
102- if let Some ( type_value) = quick_check. get ( "type" ) . or_else ( || quick_check. get ( "@type" ) ) {
103- if let Some ( type_str) = type_value. as_str ( ) {
104- match type_str {
105- "ImageService2" | "ImageService3" | "iiif:ImageProfile" => {
106- // This is clearly an Image Service info.json, try parsing it directly
107- match zoom_levels ( uri, contents) {
108- Ok ( levels) => {
109- let image = IIIFZoomableImage :: new ( levels, None ) ;
110- return Ok ( dezoomer_result_from_single_image ( image) ) ;
111- }
112- Err ( e) => return Err ( e. into ( ) ) ,
113- }
101+ if let Ok ( quick_check) = serde_json:: from_slice :: < serde_json:: Value > ( contents)
102+ && let Some ( type_value) = quick_check. get ( "type" ) . or_else ( || quick_check. get ( "@type" ) )
103+ && let Some ( type_str) = type_value. as_str ( )
104+ {
105+ match type_str {
106+ "ImageService2" | "ImageService3" | "iiif:ImageProfile" => {
107+ // This is clearly an Image Service info.json, try parsing it directly
108+ match zoom_levels ( uri, contents) {
109+ Ok ( levels) => {
110+ let image = IIIFZoomableImage :: new ( levels, None ) ;
111+ return Ok ( dezoomer_result_from_single_image ( image) ) ;
114112 }
115- "Manifest" => {
116- // This is clearly a manifest, try parsing it as such
117- match parse_iiif_manifest_from_bytes ( contents, uri) {
118- Ok ( image_infos) if !image_infos. is_empty ( ) => {
119- let image_urls: Vec < ZoomableImageUrl > = image_infos
120- . into_iter ( )
121- . map ( |image_info| {
122- let title = determine_title ( & image_info) ;
123- ZoomableImageUrl {
124- url : image_info. image_uri ,
125- title,
126- }
127- } )
128- . collect ( ) ;
129-
130- return Ok ( dezoomer_result_from_urls ( image_urls) ) ;
131- }
132- Ok ( _) => {
133- // Empty image_infos, fall through to heuristic approach
134- }
135- Err ( e) => return Err ( e. into ( ) ) ,
136- }
113+ Err ( e) => return Err ( e. into ( ) ) ,
114+ }
115+ }
116+ "Manifest" => {
117+ // This is clearly a manifest, try parsing it as such
118+ match parse_iiif_manifest_from_bytes ( contents, uri) {
119+ Ok ( image_infos) if !image_infos. is_empty ( ) => {
120+ let image_urls: Vec < ZoomableImageUrl > = image_infos
121+ . into_iter ( )
122+ . map ( |image_info| {
123+ let title = determine_title ( & image_info) ;
124+ ZoomableImageUrl {
125+ url : image_info. image_uri ,
126+ title,
127+ }
128+ } )
129+ . collect ( ) ;
130+
131+ return Ok ( dezoomer_result_from_urls ( image_urls) ) ;
137132 }
138- _ => {
139- // Unknown type , fall through to heuristic detection below
133+ Ok ( _ ) => {
134+ // Empty image_infos , fall through to heuristic approach
140135 }
136+ Err ( e) => return Err ( e. into ( ) ) ,
141137 }
142138 }
139+ _ => {
140+ // Unknown type, fall through to heuristic detection below
141+ }
143142 }
144143 }
145144
0 commit comments