-
Notifications
You must be signed in to change notification settings - Fork 5
/
jquery-maven-artifact.js
97 lines (90 loc) · 2.73 KB
/
jquery-maven-artifact.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
* jQuery Maven Artifact Plugin
*
* Version: 2.0.0
* Author: Jake Wharton
* License: Apache 2.0
*/
(function($) {
var defaults = {
'packaging': 'jar'
};
function downloadUrl(config, version) {
var groupPath = config.groupId.replace(/\./g, '/');
var url = 'https://repo1.maven.org/maven2/' + groupPath + '/' + config.artifactId + '/' + version + '/' + config.artifactId + '-' + version;
if (typeof(config.classifier) !== 'undefined') {
url += '-' + config.classifier;
}
url += '.' + config.packaging;
return url;
}
function queryBuilder(config) {
var propertiesToQuery = {
'groupId': 'g',
'artifactId': 'a',
'packaging': 'p',
'classifier': 'l'
};
var query = '';
for (var property in propertiesToQuery) {
if (propertiesToQuery.hasOwnProperty(property) && config.hasOwnProperty(property)) {
if (query !== '') {
query += '+AND+';
}
query += propertiesToQuery[property] + ':"' + config[property] + '"';
}
}
return query;
}
$.fn.artifactVersion = function(config, callback) {
if (typeof(config) === 'undefined') {
alert('Error: config object is required.');
return;
}
if (typeof(callback) === 'undefined') {
alert('Error: callback function required.');
return;
}
var config = $.extend({}, defaults, config);
var url = 'https://search.maven.org/solrsearch/select/?q=' + queryBuilder(config) + '&wt=json&json.wrf=?';
$.getJSON(url, function(response) {
var versions = response.response.docs;
if (versions.length == 0) {
return;
}
var version = versions[0].latestVersion || versions[0].v;
var versionUrl = downloadUrl(config, version);
callback(version, versionUrl);
});
};
$.fn.artifactVersions = function(config, callback) {
if (typeof(config) === 'undefined') {
alert('Error: config object is required.');
return;
}
if (typeof(callback) === 'undefined') {
alert('Error: callback function required.');
return;
}
var config = $.extend({}, defaults, config);
var url = 'https://search.maven.org/solrsearch/select/?q=' + queryBuilder(config) + '&wt=json&rows=10&core=gav&json.wrf=?';
$.getJSON(url, function(response) {
var versions = response.response.docs;
if (versions.length == 0) {
return;
}
versions.sort(function(o1, o2) {
return o1.v > o2.v ? -1 : 1;
});
var newVersions = [];
for (var i = 0; i < versions.length; i++) {
var version = versions[i].v;
newVersions.push({
name: version,
url: downloadUrl(config, version)
});
}
callback(newVersions);
});
}
})(jQuery);