summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-19 12:31:54 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-19 12:31:54 +0200
commit67e00e798d85d897e4793077aa14bcb4fb3d1765 (patch)
tree1a808c1a9a2330ffc5f201bcf62fb546cc658a7d /js
parented3990b46bcb048963bbfcb567656e82d8686796 (diff)
added javascript for uploading google reader json files
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/settingscontroller.coffee12
-rw-r--r--js/app/services/businesslayer/feedbusinesslayer.coffee16
-rw-r--r--js/app/services/persistence.coffee8
-rw-r--r--js/public/app.js44
-rw-r--r--js/tests/controllers/settingscontrollerSpec.coffee29
-rw-r--r--js/tests/services/businesslayer/feedbusinesslayerSpec.coffee33
-rw-r--r--js/tests/services/persistenceSpec.coffee13
7 files changed, 151 insertions, 4 deletions
diff --git a/js/app/controllers/settingscontroller.coffee b/js/app/controllers/settingscontroller.coffee
index a1632a761..ef282c900 100644
--- a/js/app/controllers/settingscontroller.coffee
+++ b/js/app/controllers/settingscontroller.coffee
@@ -37,4 +37,16 @@ angular.module('News').controller 'SettingsController',
console.error error
$scope.error = true
+
+ $scope.importGoogleReader = (fileContent) =>
+ $scope.jsonError = false
+ ShowAll.setShowAll(true)
+
+ try
+ parsedJSON = JSON.parse(fileContent)
+ FeedBusinessLayer.importGoogleReader(parsedJSON)
+ catch error
+ console.error error
+ $scope.jsonError = true
+
] \ No newline at end of file
diff --git a/js/app/services/businesslayer/feedbusinesslayer.coffee b/js/app/services/businesslayer/feedbusinesslayer.coffee
index f02252618..a2fa0df3e 100644
--- a/js/app/services/businesslayer/feedbusinesslayer.coffee
+++ b/js/app/services/businesslayer/feedbusinesslayer.coffee
@@ -172,6 +172,22 @@ FeedModel, NewLoading, _ExistsError, Utils) ->
@_persistence.updateFeed(feed.id)
+ importGoogleReader: (json) ->
+ url = 'http://owncloud/googlereader' # hardcoded
+
+ if angular.isUndefined(@_feedModel.getByUrl(url))
+ feed =
+ title: 'Google Reader'
+ url: url
+ folderId: 0
+ unreadCount: 0
+ faviconLink: 'url('+@_utils.imagePath('core', 'loading.gif')+')'
+
+ @_feedModel.add(feed)
+
+ @_persistence.importGoogleReader(json)
+
+
return new FeedBusinessLayer(ShowAll, FeedModel, Persistence, ActiveFeed,
FeedType, ItemModel, NewLoading, Utils)
diff --git a/js/app/services/persistence.coffee b/js/app/services/persistence.coffee
index 06945f433..88d1d18cc 100644
--- a/js/app/services/persistence.coffee
+++ b/js/app/services/persistence.coffee
@@ -248,6 +248,14 @@ $rootScope) ->
@_request.post 'news_feeds_update', params
+ importGoogleReader: (json) ->
+ params =
+ data:
+ json: json
+
+ @_request.post 'news_feeds_import_googlereader', params
+
+
###
FOLDER CONTROLLER
###
diff --git a/js/public/app.js b/js/public/app.js
index 855bcd895..7422fc83a 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -545,7 +545,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
var _this = this;
$scope.feedBusinessLayer = FeedBusinessLayer;
- return $scope["import"] = function(fileContent) {
+ $scope["import"] = function(fileContent) {
var error;
$scope.error = false;
@@ -558,6 +558,20 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return $scope.error = true;
}
};
+ return $scope.importGoogleReader = function(fileContent) {
+ var error, parsedJSON;
+
+ $scope.jsonError = false;
+ ShowAll.setShowAll(true);
+ try {
+ parsedJSON = JSON.parse(fileContent);
+ return FeedBusinessLayer.importGoogleReader(parsedJSON);
+ } catch (_error) {
+ error = _error;
+ console.error(error);
+ return $scope.jsonError = true;
+ }
+ };
}
]);
@@ -898,6 +912,23 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return _results;
};
+ FeedBusinessLayer.prototype.importGoogleReader = function(json) {
+ var feed, url;
+
+ url = 'http://owncloud/googlereader';
+ if (angular.isUndefined(this._feedModel.getByUrl(url))) {
+ feed = {
+ title: 'Google Reader',
+ url: url,
+ folderId: 0,
+ unreadCount: 0,
+ faviconLink: 'url(' + this._utils.imagePath('core', 'loading.gif') + ')'
+ };
+ this._feedModel.add(feed);
+ }
+ return this._persistence.importGoogleReader(json);
+ };
+
return FeedBusinessLayer;
})(_BusinessLayer);
@@ -2516,6 +2547,17 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this._request.post('news_feeds_update', params);
};
+ Persistence.prototype.importGoogleReader = function(json) {
+ var params;
+
+ params = {
+ data: {
+ json: json
+ }
+ };
+ return this._request.post('news_feeds_import_googlereader', params);
+ };
+
/*
FOLDER CONTROLLER
*/
diff --git a/js/tests/controllers/settingscontrollerSpec.coffee b/js/tests/controllers/settingscontrollerSpec.coffee
index 88e16c969..dca53ff4b 100644
--- a/js/tests/controllers/settingscontrollerSpec.coffee
+++ b/js/tests/controllers/settingscontrollerSpec.coffee
@@ -56,4 +56,31 @@ describe 'SettingsController', ->
@scope.import(xml)
expect(@ShowAll.getShowAll()).toBe(true)
- \ No newline at end of file
+
+
+ it 'should set showall to true if importing json', =>
+ json = "[\"test\"]"
+
+ @scope.importGoogleReader(json)
+
+ expect(@ShowAll.getShowAll()).toBe(true)
+
+
+ it 'should show an error if the json import failed', =>
+ json = 'test'
+
+ @scope.importGoogleReader(json)
+
+ expect(@scope.jsonError).toBe(true)
+
+
+ it 'should import json', =>
+ @FeedBusinessLayer.importGoogleReader = jasmine.createSpy('googlereader')
+ json = "{\"test\": \"abc\"}"
+
+ @scope.importGoogleReader(json)
+
+ expected = JSON.parse(json)
+ expect(@FeedBusinessLayer.importGoogleReader).toHaveBeenCalledWith(
+ expected
+ )
diff --git a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
index f867443c7..5ac93f25e 100644
--- a/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
+++ b/js/tests/services/businesslayer/feedbusinesslayerSpec.coffee
@@ -344,4 +344,35 @@ describe 'FeedBusinessLayer', ->
@FeedBusinessLayer.updateFeeds()
- expect(@persistence.updateFeed).not.toHaveBeenCalled() \ No newline at end of file
+ expect(@persistence.updateFeed).not.toHaveBeenCalled()
+
+
+ it 'should not import google reader json', =>
+ @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader')
+
+ json = {"test": "hi"}
+ @FeedBusinessLayer.importGoogleReader(json)
+
+ imported = @FeedModel.getByUrl('http://owncloud/googlereader')
+ expect(imported.title).toBe('Google Reader')
+ expect(imported.folderId).toBe(0)
+ expect(imported.unreadCount).toBe(0)
+
+
+ it 'should not create a google reader feed if it already exists', =>
+ @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader')
+
+ @FeedModel.add({id: 3, url: 'http://owncloud/googlereader'})
+ json = {"test": "hi"}
+ @FeedBusinessLayer.importGoogleReader(json)
+
+ imported = @FeedModel.getByUrl('http://owncloud/googlereader')
+ expect(imported.folderId).not.toBeDefined()
+
+
+ it 'should create an import google reader request', =>
+ @persistence.importGoogleReader = jasmine.createSpy('importGoogleReader')
+ json = {"test": "hi"}
+ @FeedBusinessLayer.importGoogleReader(json)
+
+ expect(@persistence.importGoogleReader).toHaveBeenCalledWith(json) \ No newline at end of file
diff --git a/js/tests/services/persistenceSpec.coffee b/js/tests/services/persistenceSpec.coffee
index 3fca95cc2..98bd96531 100644
--- a/js/tests/services/persistenceSpec.coffee
+++ b/js/tests/services/persistenceSpec.coffee
@@ -237,6 +237,17 @@ describe 'Persistence', ->
expect(@req.post).toHaveBeenCalledWith('news_feeds_create', params)
+ it 'should do a proper import google reader request', =>
+ params =
+ data:
+ json: {"some": "json"}
+
+ @Persistence.importGoogleReader(params.data.json)
+
+
+ expect(@req.post).toHaveBeenCalledWith('news_feeds_import_googlereader',
+ params)
+
###
FOLDER CONTROLLER
@@ -367,4 +378,4 @@ describe 'Persistence', ->
onFailure: jasmine.any(Function)
expect(@req.get).toHaveBeenCalledWith('news_usersettings_language',
- expected) \ No newline at end of file
+ expected)