/* | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
*/ | |
var solrAdminServices = angular.module('solrAdminServices', ['ngResource']); | |
solrAdminServices.factory('System', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/info/system', {"wt":"json", "_":Date.now()}); | |
}]) | |
.factory('Collections', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/collections', | |
{'wt':'json', '_':Date.now()}, { | |
"list": {params:{action: "LIST"}}, | |
"status": {params:{action: "CLUSTERSTATUS"}}, | |
"add": {params:{action: "CREATE"}}, | |
"delete": {params:{action: "DELETE"}}, | |
"rename": {params:{action: "RENAME"}}, | |
"createAlias": {params:{action: "CREATEALIAS"}}, | |
"deleteAlias": {params:{action: "DELETEALIAS"}}, | |
"deleteReplica": {params:{action: "DELETEREPLICA"}}, | |
"addReplica": {params:{action: "ADDREPLICA"}}, | |
"reload": {method: "GET", params:{action:"RELOAD", core: "@core"}}, | |
"optimize": {params:{}} | |
}); | |
}]) | |
.factory('Cores', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/cores', | |
{'wt':'json', '_':Date.now()}, { | |
"query": {}, | |
"list": {params:{indexInfo: false}}, | |
"add": {params:{action: "CREATE"}}, | |
"unload": {params:{action: "UNLOAD", core: "@core"}}, | |
"rename": {params:{action: "RENAME"}}, | |
"swap": {params:{action: "SWAP"}}, | |
"reload": {method: "GET", params:{action:"RELOAD", core: "@core"}, headers:{doNotIntercept: "true"}}, | |
"optimize": {params:{}} | |
}); | |
}]) | |
.factory('Logging', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/info/logging', {'wt':'json', '_':Date.now()}, { | |
"events": {params: {since:'0'}}, | |
"levels": {}, | |
"setLevel": {} | |
}); | |
}]) | |
.factory('Zookeeper', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/zookeeper', {wt:'json', _:Date.now()}, { | |
"simple": {}, | |
"dump": {params: {dump: "true"}}, | |
"liveNodes": {params: {path: '/live_nodes'}}, | |
"clusterState": {params: {detail: "true", path: "/clusterstate.json"}}, | |
"detail": {params: {detail: "true", path: "@path"}}, | |
"configs": {params: {detail:false, path: "/configs/"}}, | |
"aliases": {params: {detail: "true", path: "/aliases.json"}, transformResponse:function(data) { | |
var znode = $.parseJSON(data).znode; | |
if (znode.data) { | |
return {aliases: $.parseJSON(znode.data).collection}; | |
} else { | |
return {aliases: {}}; | |
} | |
}} | |
}); | |
}]) | |
.factory('Properties', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/info/properties', {'wt':'json', '_':Date.now()}); | |
}]) | |
.factory('Threads', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/info/threads', {'wt':'json', '_':Date.now()}); | |
}]) | |
.factory('Properties', | |
['$resource', function($resource) { | |
return $resource('/solr/admin/info/properties', {'wt':'json', '_':Date.now()}); | |
}]) | |
.factory('Replication', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/replication', {'wt':'json', core: "@core", '_':Date.now()}, { | |
"details": {params: {command: "details"}}, | |
"command": {params: {}} | |
}); | |
}]) | |
.factory('CoreSystem', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/system', {wt:'json', core: "@core", _:Date.now()}); | |
}]) | |
.factory('Update', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/:handler', {core: '@core', wt:'json', _:Date.now(), handler:'update'}, { | |
"optimize": {params: { optimize: "true"}}, | |
"commit": {params: {commit: "true"}}, | |
"post": {headers: {'Content-type': 'application/json'}, method: "POST", params: {handler: '@handler'}}, | |
"postJson": {headers: {'Content-type': 'application/json'}, method: "POST", params: {handler: '@handler'}}, | |
"postXml": {headers: {'Content-type': 'text/xml'}, method: "POST", params: {handler: '@handler'}}, | |
"postCsv": {headers: {'Content-type': 'application/csv'}, method: "POST", params: {handler: '@handler'}} | |
}); | |
}]) | |
.service('FileUpload', function ($http) { | |
this.upload = function(params, file, success, error){ | |
var url = "/solr/" + params.core + "/" + params.handler + "?"; | |
raw = params.raw; | |
delete params.core; | |
delete params.handler; | |
delete params.raw; | |
url += $.param(params); | |
if (raw && raw.length>0) { | |
if (raw[0] != "&") raw = "&" + raw; | |
url += raw; | |
} | |
var fd = new FormData(); | |
fd.append('file', file); | |
$http.post(url, fd, { | |
transformRequest: angular.identity, | |
headers: {'Content-Type': undefined} | |
}).success(success).error(error); | |
} | |
}) | |
.factory('Luke', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/luke', {core: '@core', wt:'json', _:Date.now()}, { | |
"index": {params: {numTerms: 0, show: 'index'}}, | |
"raw": {params: {numTerms: 0}}, | |
"schema": {params: {show:'schema'}}, | |
"field": {}, | |
"fields": {params: {show:'schema'}, interceptor: { | |
response: function(response) { | |
var fieldsAndTypes = []; | |
for (var field in response.data.schema.fields) { | |
fieldsAndTypes.push({group: "Fields", label: field, value: "fieldname=" + field}); | |
} | |
for (var type in response.data.schema.types) { | |
fieldsAndTypes.push({group: "Types", label: type, value: "fieldtype=" + type}); | |
} | |
return fieldsAndTypes; | |
} | |
}} | |
}); | |
}]) | |
.factory('Analysis', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/analysis/field', {core: '@core', wt:'json', _:Date.now()}, { | |
"field": {params: {"analysis.showmatch": true}} | |
}); | |
}]) | |
.factory('DataImport', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/:name', {core: '@core', name: '@name', indent:'on', wt:'json', _:Date.now()}, { | |
"config": {params: {command: "show-config"}, headers: {doNotIntercept: "true"}, | |
transformResponse: function(data) { | |
return {config: data}; | |
} | |
}, | |
"status": {params: {command: "status"}, headers: {doNotIntercept: "true"}}, | |
"reload": {params: {command: "reload-config"}}, | |
"post": {method: "POST", | |
headers: {'Content-type': 'application/x-www-form-urlencoded'}, | |
transformRequest: function(data) { return $.param(data) }} | |
}); | |
}]) | |
.factory('Ping', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/ping', {wt:'json', core: '@core', ts:Date.now(), _:Date.now()}, { | |
"ping": {}, | |
"status": {params:{action:"status"}, headers: {doNotIntercept: "true"} | |
}}); | |
}]) | |
.factory('Mbeans', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/mbeans', {'wt':'json', core: '@core', '_':Date.now()}, { | |
stats: {params: {stats: true}}, | |
info: {}, | |
reference: { | |
params: {wt: "xml", stats: true}, transformResponse: function (data) { | |
return {reference: data} | |
} | |
}, | |
delta: {method: "POST", | |
params: {stats: true, diff:true}, | |
headers: {'Content-type': 'application/x-www-form-urlencoded'}, | |
transformRequest: function(data) { | |
return "stream.body=" + encodeURIComponent(data); | |
} | |
} | |
}); | |
}]) | |
.factory('Files', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/file', {'wt':'json', core: '@core', '_':Date.now()}, { | |
"list": {}, | |
"get": {method: "GET", interceptor: { | |
response: function(config) {return config;} | |
}, transformResponse: function(data) { | |
return data; | |
}} | |
}); | |
}]) | |
.factory('Query', | |
['$resource', function($resource) { | |
var resource = $resource('/solr/:core/:handler', {core: '@core', handler: '@handler', '_':Date.now()}, { | |
"query": { | |
method: "GET", | |
transformResponse: function (data) { | |
return {data: data} | |
}, | |
headers: {doNotIntercept: "true"} | |
} | |
}); | |
resource.url = function(params) { | |
var qs = []; | |
for (key in params) { | |
if (key != "core" && key != "handler") { | |
for (var i in params[key]) { | |
qs.push(key + "=" + params[key][i]); | |
} | |
} | |
} | |
return "/solr/" + params.core + "/" + params.handler + "?" + qs.sort().join("&"); | |
} | |
return resource; | |
}]) | |
.factory('Segments', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/admin/segments', {'wt':'json', core: '@core', _:Date.now()}, { | |
get: {} | |
}); | |
}]) | |
.factory('Schema', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/schema', {wt: 'json', core: '@core', _:Date.now()}, { | |
get: {method: "GET"}, | |
check: {method: "GET", headers: {doNotIntercept: "true"}}, | |
post: {method: "POST"} | |
}); | |
}]) | |
.factory('Config', | |
['$resource', function($resource) { | |
return $resource('/solr/:core/config', {wt: 'json', core: '@core', _:Date.now()}, { | |
get: {method: "GET"} | |
}) | |
}]); |