2016-05-16 15:28:23 +02:00
|
|
|
(function () {
|
|
|
|
'use strict';
|
|
|
|
|
2016-12-24 15:31:31 +01:00
|
|
|
angular.module('ariaNg').factory('aria2HttpRpcService', ['$http', 'base64', 'ariaNgSettingService', 'ariaNgLogService', function ($http, base64, ariaNgSettingService, ariaNgLogService) {
|
2016-05-16 18:59:27 +02:00
|
|
|
var rpcUrl = ariaNgSettingService.getJsonRpcUrl();
|
2016-12-24 15:31:31 +01:00
|
|
|
var method = ariaNgSettingService.getHttpMethod();
|
|
|
|
|
|
|
|
var getUrlWithQueryString = function (url, parameters) {
|
|
|
|
if (!url || url.length < 1) {
|
|
|
|
return url;
|
|
|
|
}
|
|
|
|
|
|
|
|
var queryString = '';
|
|
|
|
|
|
|
|
for (var key in parameters) {
|
|
|
|
if (!parameters.hasOwnProperty(key)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
var value = parameters[key];
|
|
|
|
|
|
|
|
if (value === null || angular.isUndefined(value)) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (queryString.length > 0) {
|
|
|
|
queryString += '&';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (angular.isObject(value) || angular.isArray(value)) {
|
|
|
|
value = angular.toJson(value);
|
|
|
|
value = base64.encode(value);
|
|
|
|
value = encodeURIComponent(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
queryString += key + '=' + value;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (queryString.length < 1) {
|
|
|
|
return url;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (url.indexOf('?') < 0) {
|
|
|
|
queryString = '?' + queryString;
|
|
|
|
} else {
|
|
|
|
queryString = '&' + queryString;
|
|
|
|
}
|
|
|
|
|
|
|
|
return url + queryString;
|
|
|
|
};
|
2016-05-16 15:28:23 +02:00
|
|
|
|
|
|
|
return {
|
|
|
|
request: function (context) {
|
|
|
|
if (!context) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var requestContext = {
|
|
|
|
url: rpcUrl,
|
2016-12-24 15:31:31 +01:00
|
|
|
method: method
|
2016-05-16 15:28:23 +02:00
|
|
|
};
|
|
|
|
|
2016-12-24 15:31:31 +01:00
|
|
|
if (requestContext.method === 'POST') {
|
|
|
|
requestContext.data = context.requestBody;
|
|
|
|
} else if (requestContext.method === 'GET') {
|
|
|
|
requestContext.url = getUrlWithQueryString(requestContext.url, context.requestBody);
|
|
|
|
}
|
|
|
|
|
2016-12-10 18:01:28 +01:00
|
|
|
ariaNgLogService.debug('[aria2HttpRpcService.request] request start', requestContext);
|
2016-11-06 15:41:28 +01:00
|
|
|
|
2016-08-28 15:47:29 +02:00
|
|
|
return $http(requestContext).success(function (data) {
|
2016-12-10 18:01:28 +01:00
|
|
|
ariaNgLogService.debug('[aria2HttpRpcService.request] response success', data);
|
2016-11-06 15:41:28 +01:00
|
|
|
|
2016-05-31 18:01:16 +02:00
|
|
|
if (!data) {
|
2016-05-16 15:28:23 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-06-10 13:23:16 +02:00
|
|
|
if (context.successCallback) {
|
|
|
|
context.successCallback(data.id, data.result);
|
2016-05-16 15:28:23 +02:00
|
|
|
}
|
2016-08-28 15:47:29 +02:00
|
|
|
}).error(function (data) {
|
2016-12-10 18:01:28 +01:00
|
|
|
ariaNgLogService.debug('[aria2HttpRpcService.request] response error', data);
|
2016-11-06 15:41:28 +01:00
|
|
|
|
2016-06-02 18:16:27 +02:00
|
|
|
if (!data) {
|
2016-08-28 15:47:29 +02:00
|
|
|
data = {
|
|
|
|
id: '-1',
|
|
|
|
error: {
|
|
|
|
// code: '-1',
|
|
|
|
// message: 'Unknown Error',
|
|
|
|
innerError: true
|
|
|
|
}
|
|
|
|
};
|
2016-06-02 18:16:27 +02:00
|
|
|
}
|
|
|
|
|
2016-06-04 11:08:42 +02:00
|
|
|
if (context.errorCallback) {
|
2016-06-10 13:23:16 +02:00
|
|
|
context.errorCallback(data.id, data.error);
|
2016-06-02 18:16:27 +02:00
|
|
|
}
|
2016-05-16 15:28:23 +02:00
|
|
|
});
|
2016-06-28 18:18:17 +02:00
|
|
|
},
|
|
|
|
on: function (eventName, callback) {
|
|
|
|
//Not implement
|
2016-05-16 15:28:23 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
}]);
|
2016-08-01 16:49:16 +02:00
|
|
|
}());
|