-
-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathsearch-service.js
109 lines (93 loc) · 4.34 KB
/
search-service.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
98
99
100
101
102
103
104
105
106
107
108
109
//
angular
.module('nzbhydraApp')
.factory('SearchService', SearchService);
function SearchService($http) {
var lastExecutedQuery;
var lastExecutedSearchRequestParameters;
var lastResults;
var modalInstance;
return {
search: search,
getLastResults: getLastResults,
loadMore: loadMore,
shortcutSearch: shortcutSearch,
getModalInstance: getModalInstance,
setModalInstance: setModalInstance,
};
function getModalInstance() {
return modalInstance;
}
function setModalInstance(mi) {
modalInstance = mi;
}
function search(searchRequestId, category, query, metaData, season, episode, minsize, maxsize, minage, maxage, indexers, mode) {
// console.time("search");
var uri = new URI("internalapi/search");
var searchRequestParameters = {};
searchRequestParameters.searchRequestId = searchRequestId;
searchRequestParameters.query = query;
searchRequestParameters.minsize = minsize;
searchRequestParameters.maxsize = maxsize;
searchRequestParameters.minage = minage;
searchRequestParameters.maxage = maxage;
searchRequestParameters.category = category;
searchRequestParameters.mode = mode;
if (!angular.isUndefined(indexers) && indexers !== null) {
searchRequestParameters.indexers = indexers.split(",");
}
if (metaData) {
searchRequestParameters.title = metaData.title;
if (category.indexOf("Movies") > -1 || (category.indexOf("20") === 0) || mode === "movie") {
searchRequestParameters.tmdbId = metaData.tmdbId;
searchRequestParameters.imdbId = metaData.imdbId;
} else if (category.indexOf("TV") > -1 || (category.indexOf("50") === 0) || mode === "tvsearch") {
searchRequestParameters.tvdbId = metaData.tvdbId;
searchRequestParameters.imdbId = metaData.imdbId;
searchRequestParameters.tvrageId = metaData.rid;
searchRequestParameters.tvmazeId = metaData.tvmazeId;
searchRequestParameters.season = season;
searchRequestParameters.episode = episode;
}
}
lastExecutedQuery = uri;
lastExecutedSearchRequestParameters = searchRequestParameters;
return $http.post(uri.toString(), searchRequestParameters).then(processData);
}
function loadMore(offset, limit, loadAll) {
lastExecutedSearchRequestParameters.offset = offset;
lastExecutedSearchRequestParameters.limit = limit;
lastExecutedSearchRequestParameters.loadAll = angular.isDefined(loadAll) ? loadAll : false;
return $http.post(lastExecutedQuery.toString(), lastExecutedSearchRequestParameters).then(processData);
}
function shortcutSearch(searchRequestId) {
return $http.post("internalapi/shortcutSearch/" + searchRequestId);
}
function processData(response) {
var searchResults = response.data.searchResults;
var indexerSearchMetaDatas = response.data.indexerSearchMetaDatas;
var numberOfAvailableResults = response.data.numberOfAvailableResults;
var numberOfRejectedResults = response.data.numberOfRejectedResults;
var numberOfDuplicateResults = response.data.numberOfDuplicateResults;
var numberOfAcceptedResults = response.data.numberOfAcceptedResults;
var numberOfProcessedResults = response.data.numberOfProcessedResults;
var rejectedReasonsMap = response.data.rejectedReasonsMap;
var notPickedIndexersWithReason = response.data.notPickedIndexersWithReason;
lastResults = {
"searchResults": searchResults,
"indexerSearchMetaDatas": indexerSearchMetaDatas,
"numberOfAvailableResults": numberOfAvailableResults,
"numberOfAcceptedResults": numberOfAcceptedResults,
"numberOfRejectedResults": numberOfRejectedResults,
"numberOfProcessedResults": numberOfProcessedResults,
"numberOfDuplicateResults": numberOfDuplicateResults,
"rejectedReasonsMap": rejectedReasonsMap,
"notPickedIndexersWithReason": notPickedIndexersWithReason
};
// console.timeEnd("searchonly");
return lastResults;
}
function getLastResults() {
return lastResults;
}
}