Skip to content

Commit 62605b0

Browse files
authored
Merge pull request #24 from danieltbrennan/jpca_image2_bug
handle missing context property
2 parents a62c27a + a375ece commit 62605b0

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

__tests__/parameters.test.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,56 @@ import { describe, expect, test } from 'vitest';
22
import { parseImageServiceRequest } from '../src/utility/parse-image-service-request';
33
import { imageServiceRequestToString } from '../src/utility/image-service-request-to-string';
44
import { createImageServiceRequest } from '../src/utility/create-image-service-request';
5+
import { ImageServiceImageRequest } from '../src';
6+
import { ImageService } from '@iiif/presentation-3';
57

68
describe('IIIF Image API Parameters', () => {
79
/// {scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}
810

11+
describe('SI JPCA image service examples', () => {
12+
test('image service without explicit context', () => {
13+
const parsed = {
14+
scheme: 'https',
15+
server: 'iiif.jpcarchive.org',
16+
prefix: '',
17+
identifier: 'iiif/v2.0/media/JPC-b0a2d4ca692a34ef465ff5b5c736391d_0009_001',
18+
originalPath: '',
19+
type: 'image',
20+
region: {
21+
full: true,
22+
},
23+
size: {
24+
max: false,
25+
upscaled: false,
26+
confined: false,
27+
width: 550,
28+
height: 600,
29+
},
30+
rotation: {
31+
angle: 0,
32+
mirror: false,
33+
},
34+
format: 'jpg',
35+
quality: 'default',
36+
} as ImageServiceImageRequest;
37+
38+
const service = {
39+
sizes: [],
40+
width: 550,
41+
height: 600,
42+
maxWidth: 550,
43+
maxHeight: 600,
44+
id: 'https://iiif.jpcarchive.org/iiif/v2.0/media/JPC-b0a2d4ca692a34ef465ff5b5c736391d_0009_001',
45+
type: 'ImageService2',
46+
profile: 'level2',
47+
} as ImageService;
48+
49+
expect(imageServiceRequestToString(parsed, service)).toEqual(
50+
'https://iiif.jpcarchive.org/iiif/v2.0/media/JPC-b0a2d4ca692a34ef465ff5b5c736391d_0009_001/full/full/0/default.jpg'
51+
);
52+
});
53+
});
54+
955
describe('munch.emuseum.com examples', () => {
1056
// https://munch.emuseum.com/apis/iiif/image/v2/17261/full/max/0/default.jpg
1157
// https://munch.emuseum.com/apis/iiif/image/v2/17261/90,0,350,220/max/0/default.jpg

src/utility/image-service-request-to-string.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ export function imageServiceRequestToString(req: ImageServiceImageRequest, servi
2626
? service['@context']
2727
: [service['@context']]
2828
: [];
29-
const is2 = ctx.indexOf('http://iiif.io/api/image/2/context.json') !== -1;
29+
const profile = service['profile'];
30+
// fallback for bug where some level 2 image services lack a context
31+
const is2 = ctx.indexOf('http://iiif.io/api/image/2/context.json') !== -1 || profile === 'level2';
3032
const is3 = ctx.indexOf('http://iiif.io/api/image/3/context.json') !== -1;
3133

3234
// max size, for canonical.

0 commit comments

Comments
 (0)