Skip to content

Commit c6e44c7

Browse files
author
Felix Epp
committed
Updater Tested without Configs from Storage and verifcation
1 parent 15e66db commit c6e44c7

File tree

2 files changed

+81
-47
lines changed

2 files changed

+81
-47
lines changed

app/background_app.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import log from 'rose/log';
2525
import ExtractorEngine from 'rose/extractor-engine';
2626
import ObserverCollection from 'rose/collections/observers';
2727
import ExtractorCollection from 'rose/collections/extractors';
28+
// import SystemConfigs from 'rose/models/system-config';
29+
import Updater from 'rose/updater';
2830

2931
import WindowTracker from 'rose/activity-trackers/window';
3032

@@ -47,6 +49,9 @@ import WindowTracker from 'rose/activity-trackers/window';
4749
}
4850

4951
WindowTracker.start();
52+
53+
54+
// setTimeout(Updater.update,5000);
5055
})();
5156

5257
kango.ui.browserButton.addEventListener(kango.ui.browserButton.event.COMMAND, function(event) {
@@ -59,13 +64,23 @@ kango.addMessageListener('LoadNetworks', function(event) {
5964
/*
6065
* Store Observers and extractors in storage
6166
* FIX: Updater loads observers
67+
* Fix: Remove old networks
6268
*/
6369
var extractorCol = new ExtractorCollection();
6470
var observerCol = new ObserverCollection();
6571
var networks = event.data;
6672

73+
6774
observerCol.fetch({success: () => {
75+
// observerCol.each((model) => {
76+
// observerCol.remove(model);
77+
// model.destroy();
78+
// });
6879
extractorCol.fetch({success: () => {
80+
// extractorCol.each((model) => {
81+
// extractorCol.remove(model);
82+
// model.destroy();
83+
// });
6984
for (var i = 0; i < networks.length; i++) {
7085
if(networks[i].observers !== undefined) {
7186
for (var j = 0; j < networks[i].observers.length; j++) {

app/rose/updater.js

Lines changed: 66 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,85 @@
1-
/* ################# DRAFT ! NEVER RUN ############# */
1+
import ConfigModel from 'rose/models/system-config';
2+
import ObserverCollection from 'rose/collections/observers';
3+
import ExtractorCollection from 'rose/collections/extractors';
24

3-
import ConfigModel from 'models/system-config';
4-
import ObserverCollection from 'collections/observers';
5-
import ExtractorCollection from 'collections/extractors';
5+
let configs = new ConfigModel();
66

7-
class Updater {
8-
constructor() {
9-
// code
10-
this.configs = new ConfigModel();
11-
this.configs.fetch();
7+
let update = () => {
8+
configs.fetch({success: () => {
9+
//request repo url and update observer/extractor accordingly
10+
// $.get(configs.get('repositoryURL'), function(data) {
11+
$.get('https://secure-software-engineering.github.io/rose/example/base.json', function(data) {
1212

13-
this.observers = new ObserverCollection();
14-
this.extractors = new ExtractorCollection();
15-
this.fetchCollections();
16-
}
13+
console.log(data);
1714

18-
fetchCollections() {
19-
return $.when(this.observers.fetch(), this.extractors.fetch());
20-
}
15+
//verfiy timestamp and signature
16+
//iterate through networks
2117

22-
updateFromRepository() {
23-
//request repo url and update observer/extractor accordingly
24-
$.get(this.configs.get('repositoryURL'), function(data) {
25-
console.log(data);
26-
//verfiy timestamp and signature
27-
//iterate through networks
28-
let networks = this.configs.get(networks);
18+
19+
let lastUpadte = 1436534468580;
20+
if (lastUpadte < data.timestamp) {
21+
22+
// let networks = this.configs.get(networks);
23+
let networks = [{ id: 1, name: 'Facebook', descriptiveName: 'Facebook', identifier: 'facebook.com'}];
2924
for (var n = networks.length - 1; n >= 0; n--) {
30-
let network = networks[n].name;
25+
debugger;
26+
let remoteNetwork = _.findWhere(data.networks, {id: networks[n].id, name: networks[n].name});
3127

28+
if (remoteNetwork !== undefined) {
3229
//request observer file
30+
$.get('https://secure-software-engineering.github.io/rose/example/' + remoteNetwork.observers, function(observers) {
31+
console.log(observers);
32+
updateByVersion(new ObserverCollection(), observers);
33+
});
3334
//request extractor file
35+
$.get('https://secure-software-engineering.github.io/rose/example/' + remoteNetwork.extractors, function(extractors) {
36+
console.log(extractors);
37+
updateByVersion(new ExtractorCollection(), extractors);
38+
});
39+
40+
}
41+
}
42+
}
3443

35-
};
3644
});
37-
}
45+
}});
46+
};
3847

39-
updateObservers(observers) {
40-
this.observers.each((observer) => {
41-
let remoteObserver = _.findWhere(observers, {name: observer.get('name'), network: observer.get('network')});
48+
let compareVersion = (version1, version2) => {
4249

43-
if (remoteObserver !== undefined && Number(remoteObserver.version) > Number(observer.get('version'))) {
44-
observer.save(remoteObserver);
45-
}
46-
});
50+
var result = false;
4751

48-
}
52+
version1 = version1.split('.');
53+
version2 = version2.split('.');
4954

50-
updateExtractors(extractors) {
51-
this.extractors.each((extractor) => {
52-
let remoteExtractor = _.findWhere(extractors, {name: extractor.get('name'), network: extractor.get('network')});
55+
for(var i=0; i < (Math.max(version1.length,version2.length)); i++){
5356

54-
if (remoteExtractor !== undefined && Number(remoteExtractor.version) > Number(extractor.get('version'))) {
55-
extractor.save(remoteObserver);
56-
}
57-
});
57+
if(version1[i] === undefined){ version1[i] = 0; }
58+
if(version2[i] === undefined){ version2[i] = 0; }
5859

59-
}
60+
if(Number(version1[i]) < Number(version2[i])){
61+
result = true;
62+
break;
63+
}
64+
if(version1[i] !== version2[i]){
65+
break;
66+
}
67+
}
68+
return(result);
69+
};
6070

61-
loadAllIntoStorage(networks) {
62-
//load all observers / extractors
63-
}
64-
}
71+
let updateByVersion = (collection, newCollection) => {
72+
collection.fetch({success: () => {
73+
debugger;
74+
collection.each((model) => {
75+
let remoteModel = _.findWhere(newCollection, {name: model.get('name'), network: model.get('network')});
76+
if (remoteModel !== undefined && compareVersion(model.get('version'), remoteModel.version)) {
77+
model.save(remoteModel);
78+
console.log('updated observer/extractor');
79+
}
80+
else console.log('no update');
81+
});
82+
}});
83+
};
6584

66-
export default Updater;
85+
export default {update};

0 commit comments

Comments
 (0)