Skip to content

Commit

Permalink
Merge pull request #221 from wmde/mobile-urls
Browse files Browse the repository at this point in the history
Accepts mobile Commons URLs and some minor improvements regarding mobile Wikipedia URLs
  • Loading branch information
jakobw committed May 17, 2016
2 parents 61d3549 + 16c8289 commit f2eab7b
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 42 deletions.
6 changes: 3 additions & 3 deletions js/app/InputHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,13 @@ $.extend( InputHandler.prototype, {
*/
_splitUrl: function( url ) {
var regExp0 = /upload.wikimedia\.org\/wikipedia\/([-a-z]{2,})\//i,
regExp1 = /([-a-z]{2,}(\.m)?\.wikipedia\.org)\//i,
regExp1 = /([-a-z]{2,})(\.m)?\.wikipedia\.org\//i,
regExp2 = /\/wikipedia\/([^/]+)\//,
matches,
wikiUrl,
title;

if( url.indexOf( 'commons.wikimedia.org/' ) !== -1 ) {
if( url.indexOf( 'commons.wikimedia.org/' ) !== -1 || url.indexOf( 'commons.m.wikimedia.org/' ) !== -1 ) {
wikiUrl = 'https://commons.wikimedia.org/';
title = this._extractPageTitle( url );
} else if( regExp0.test( url ) ) {
Expand All @@ -187,7 +187,7 @@ $.extend( InputHandler.prototype, {
title = this._extractPageTitle( url );
} else if( regExp1.test( url ) ) {
matches = url.match( regExp1 );
wikiUrl = 'https://' + matches[ 1 ] + '/';
wikiUrl = 'https://' + matches[ 1 ] + '.wikipedia.org/';

title = this._extractPageTitle( url, false );

Expand Down
110 changes: 71 additions & 39 deletions tests/app/InputHandler.local.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,77 +18,94 @@ var api = new LocalApi( 'fixtures' );
var testCases = [
{
input: [
'http://commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg',
'https://commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg',
'commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg',
'http://commons.wikimedia.org/w/index.php?title=File:Helene_Fischer_2010.jpg',
'http://upload.wikimedia.org/wikipedia/commons/8/84/Helene_Fischer_2010.jpg',
'http://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Helene_Fischer_2010.jpg/171px-Helene_Fischer_2010.jpg',
'https://commons.wikimedia.org/w/index.php?title=File:Helene_Fischer_2010.jpg',
'https://upload.wikimedia.org/wikipedia/commons/8/84/Helene_Fischer_2010.jpg',
'https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Helene_Fischer_2010.jpg/171px-Helene_Fischer_2010.jpg',
'upload.wikimedia.org/wikipedia/commons/thumb/8/84/Helene_Fischer_2010.jpg/171px-Helene_Fischer_2010.jpg',
'http://commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg#mediaviewer/File:Helene_Fischer_2010.jpg',
'https://commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg#mediaviewer/File:Helene_Fischer_2010.jpg',
'commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg?uselang=de',
'https://commons.wikimedia.org/w/index.php?title=File:Helene_Fischer_2010.jpg&uselang=de',
'commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg?foo=bar'
'commons.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg?foo=bar',
'https://commons.m.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg',
'commons.m.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg',
'https://commons.m.wikimedia.org/w/index.php?title=File:Helene_Fischer_2010.jpg',
'commons.m.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg?uselang=de',
'https://commons.m.wikimedia.org/w/index.php?title=File:Helene_Fischer_2010.jpg&uselang=de',
'commons.m.wikimedia.org/wiki/File:Helene_Fischer_2010.jpg?foo=bar'
],
expected: {
file: 'File:Helene_Fischer_2010.jpg',
wikiUrl: 'https://commons.wikimedia.org/'
}
}, {
input: [
'http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Le_Bistro/24_f%C3%A9vrier_2012#mediaviewer/Fichier:Helene_Fischer_2010.jpg'
'https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Le_Bistro/24_f%C3%A9vrier_2012#mediaviewer/Fichier:Helene_Fischer_2010.jpg'
],
expected: {
file: 'File:Helene_Fischer_2010.jpg',
wikiUrl: 'https://commons.wikimedia.org/'
}
}, {
input: [
'http://commons.wikimedia.org/wiki/File:JapaneseToiletControlPanel.jpg',
'http://commons.wikimedia.org/w/index.php?title=File:JapaneseToiletControlPanel.jpg',
'http://upload.wikimedia.org/wikipedia/commons/e/e4/JapaneseToiletControlPanel.jpg',
'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/JapaneseToiletControlPanel.jpg/320px-JapaneseToiletControlPanel.jpg',
'http://commons.wikimedia.org/wiki/File:JapaneseToiletControlPanel.jpg#mediaviewer/File:JapaneseToiletControlPanel.jpg',
'http://commons.wikimedia.org/wiki/User:Chris_73/Gallery_001#mediaviewer/File:JapaneseToiletControlPanel.jpg'
'https://commons.wikimedia.org/wiki/File:JapaneseToiletControlPanel.jpg',
'https://commons.wikimedia.org/w/index.php?title=File:JapaneseToiletControlPanel.jpg',
'https://upload.wikimedia.org/wikipedia/commons/e/e4/JapaneseToiletControlPanel.jpg',
'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/JapaneseToiletControlPanel.jpg/320px-JapaneseToiletControlPanel.jpg',
'https://commons.wikimedia.org/wiki/File:JapaneseToiletControlPanel.jpg#mediaviewer/File:JapaneseToiletControlPanel.jpg',
'https://commons.wikimedia.org/wiki/User:Chris_73/Gallery_001#mediaviewer/File:JapaneseToiletControlPanel.jpg',
'https://commons.m.wikimedia.org/wiki/File:JapaneseToiletControlPanel.jpg',
'https://commons.m.wikimedia.org/w/index.php?title=File:JapaneseToiletControlPanel.jpg'
],
expected: {
file: 'File:JapaneseToiletControlPanel.jpg',
wikiUrl: 'https://commons.wikimedia.org/'
}
}, {
input: [
'http://commons.wikimedia.org/wiki/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'http://commons.wikimedia.org/w/index.php?title=File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'http://upload.wikimedia.org/wikipedia/commons/f/f4/Gerardus_t%27_Hooft_at_Harvard.jpg',
'http://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Gerardus_t%27_Hooft_at_Harvard.jpg/180px-Gerardus_t%27_Hooft_at_Harvard.jpg',
'http://commons.wikimedia.org/wiki/File:Gerardus_t%27_Hooft_at_Harvard.jpg#mediaviewer/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'http://commons.wikimedia.org/wiki/Gerardus_%27t_Hooft#mediaviewer/File:Gerardus_t%27_Hooft_at_Harvard.jpg'
'https://commons.wikimedia.org/wiki/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://commons.wikimedia.org/w/index.php?title=File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://upload.wikimedia.org/wikipedia/commons/f/f4/Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Gerardus_t%27_Hooft_at_Harvard.jpg/180px-Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://commons.wikimedia.org/wiki/File:Gerardus_t%27_Hooft_at_Harvard.jpg#mediaviewer/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://commons.wikimedia.org/wiki/Gerardus_%27t_Hooft#mediaviewer/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://commons.m.wikimedia.org/wiki/File:Gerardus_t%27_Hooft_at_Harvard.jpg',
'https://commons.m.wikimedia.org/w/index.php?title=File:Gerardus_t%27_Hooft_at_Harvard.jpg'
],
expected: {
file: 'File:Gerardus_t\'_Hooft_at_Harvard.jpg',
wikiUrl: 'https://commons.wikimedia.org/'
}
}, {
input: [
'http://de.wikipedia.org/wiki/File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.wikipedia.org/wiki/File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.wikipedia.org/wiki/File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://de.wikipedia.org/w/index.php?title=File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://upload.wikimedia.org/wikipedia/de/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://upload.wikimedia.org/wikipedia/de/thumb/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg/320px-1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.wikipedia.org/w/index.php?title=File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://upload.wikimedia.org/wikipedia/de/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://upload.wikimedia.org/wikipedia/de/thumb/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg/320px-1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'upload.wikimedia.org/wikipedia/de/thumb/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg/320px-1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://upload.wikimedia.org/wikipedia/de/thumb/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg/320px-1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg'
'https://upload.wikimedia.org/wikipedia/de/thumb/f/fb/1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg/320px-1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.m.wikipedia.org/wiki/File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.m.wikipedia.org/wiki/File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.m.wikipedia.org/w/index.php?title=File:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg'
],
expected: {
file: 'File:1_FC_Bamberg_-_1_FC_Nürnberg_1901.jpg',
wikiUrl: 'https://de.wikipedia.org/'
}
}, {
input: [
'http://de.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://de.wikipedia.org/w/index.php?title=Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.wikipedia.org/w/index.php?title=Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.wikipedia.org/w/index.php?title=Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://de.wikipedia.org/wiki/1._FC_Bamberg#mediaviewer/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'http://de.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg#mediaviewer/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg'
'https://de.wikipedia.org/wiki/1._FC_Bamberg#mediaviewer/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg#mediaviewer/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.m.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.m.wikipedia.org/wiki/Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'https://de.m.wikipedia.org/w/index.php?title=Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg',
'de.m.wikipedia.org/w/index.php?title=Datei:1_FC_Bamberg_-_1_FC_N%C3%BCrnberg_1901.jpg'
],
expected: {
file: 'Datei:1_FC_Bamberg_-_1_FC_Nürnberg_1901.jpg',
Expand All @@ -104,7 +121,8 @@ var testCases = [
}
}, {
input: [
'https://commons.wikimedia.org/wiki/File:A_Punjab_Village,_1925.webm'
'https://commons.wikimedia.org/wiki/File:A_Punjab_Village,_1925.webm',
'https://commons.m.wikimedia.org/wiki/File:A_Punjab_Village,_1925.webm'
],
expected: {
file: 'File:A_Punjab_Village,_1925.webm',
Expand Down Expand Up @@ -166,30 +184,43 @@ QUnit.test( 'getFilename() returning ImageInfo objects', function( assert ) {
var testCases = [
{
input: [
'http://en.wikipedia.org/wiki/K%C3%B6nigsberg,_Bavaria',
'http://en.wikipedia.org/w/index.php?title=K%C3%B6nigsberg,_Bavaria'
'https://en.wikipedia.org/wiki/K%C3%B6nigsberg,_Bavaria',
'https://en.wikipedia.org/w/index.php?title=K%C3%B6nigsberg,_Bavaria',
'https://en.m.wikipedia.org/wiki/K%C3%B6nigsberg,_Bavaria',
'https://en.m.wikipedia.org/w/index.php?title=K%C3%B6nigsberg,_Bavaria'

],
expected: {
wikiUrl: 'https://en.wikipedia.org/'
}
}, {
input: [
'http://de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern',
'http://de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern?uselang=en',
'https://de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern',
'https://de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern?uselang=en',
'de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern',
'de.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern?uselang=de',
'http://de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern',
'http://de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de',
'https://de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern',
'https://de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de',
'de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern',
'de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de'
'de.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de',
'https://de.m.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern',
'https://de.m.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern?uselang=en',
'de.m.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern',
'de.m.wikipedia.org/wiki/K%C3%B6nigsberg_in_Bayern?uselang=de',
'https://de.m.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern',
'https://de.m.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de',
'de.m.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern',
'de.m.wikipedia.org/w/index.php?title=K%C3%B6nigsberg_in_Bayern&uselang=de'
],
expected: {
wikiUrl: 'https://de.wikipedia.org/'
}
}, {
input: [
'https://commons.wikimedia.org/wiki/User:Seeteufel',
'commons.wikimedia.org/wiki/User:Seeteufel'
'commons.wikimedia.org/wiki/User:Seeteufel',
'https://commons.m.wikimedia.org/wiki/User:Seeteufel',
'commons.m.wikimedia.org/wiki/User:Seeteufel'
],
expected: {
wikiUrl: 'https://commons.wikimedia.org/'
Expand Down Expand Up @@ -247,8 +278,9 @@ QUnit.test( 'getFilename returns an error when given an URL that cannot be proce
var testCases = [
'https://www.wikimedia.de/w/images.homepage/d/d6/Pavel_Richter_WMDE.JPG',
'https://www.wikimedia.de/w/images.homepage/d/d6/',
'http://foo.bar',
'https://de.wikipedia.org/wiki/Lars_Kindgen'
'https://foo.bar',
'https://de.wikipedia.org/wiki/Lars_Kindgen',
'https://de.m.wikipedia.org/wiki/Lars_Kindgen'
];

/**
Expand Down

0 comments on commit f2eab7b

Please sign in to comment.