-
Notifications
You must be signed in to change notification settings - Fork 0
/
blogger.js
51 lines (47 loc) · 1.33 KB
/
blogger.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
'use strict';
angular.module('devnApp')
.factory('bloggerService', ['$http', '$q', function ($http, $q) {
function parsePost (entry) {
var post = {
title: entry.title,
publishDate: entry.published,
content: entry.content,
url: entry.selfLink
};
return post;
}
function parsePosts (options) {
var d = $q.defer();
var posts = [];
loadPosts(options).then(function (data) {
if (data.items) {
var entries = data.items;
for (var i = 0; i < entries.length; i++) {
posts.push(parsePost(entries[i]));
}
}
d.resolve({ items: posts, pageToken: data.nextPageToken });
});
return d.promise;
}
function loadPosts (opts) {
var d = $q.defer();
var url = opts.url + (
'?key=' + opts.apiKey +
(opts.maxResults ? '&maxResults=' + opts.maxResults : '') +
(opts.pageToken ? '&pageToken=' + opts.pageToken : '') +
(opts.fields ? '&fields=' + encodeURIComponent(opts.fields) : '') +
'&callback=JSON_CALLBACK'
);
$http.jsonp(url).success(function (data) {
d.resolve(data);
});
return d.promise;
}
// Public API here
return {
get: function (options) {
return parsePosts(options);
}
};
}]);