/files/aping.plugin-rss/0.7.6/aping-plugin-rss.js

https://gitlab.com/Mirros/jsdelivr · JavaScript · 175 lines · 133 code · 30 blank · 12 comment · 41 complexity · ab427d2ccd09da8fc64f381e31151577 MD5 · raw file

  1. /**
  2. @name: aping-plugin-rss
  3. @version: 0.7.6 (11-01-2016)
  4. @author: Jonathan Hornung
  5. @url: https://github.com/JohnnyTheTank/apiNG-plugin-rss#readme
  6. @license: MIT
  7. */
  8. "use strict";
  9. var jjtApingRss = angular.module("jtt_aping_rss", [])
  10. .directive('apingRss', ['apingRssHelper', 'apingUtilityHelper', 'rssFactory', function (apingRssHelper, apingUtilityHelper, rssFactory) {
  11. return {
  12. require: '?aping',
  13. restrict: 'A',
  14. replace: 'false',
  15. link: function (scope, element, attrs, apingController) {
  16. var appSettings = apingController.getAppSettings();
  17. var requests = apingUtilityHelper.parseJsonFromAttributes(attrs.apingRss, apingRssHelper.getThisPlatformString(), appSettings);
  18. requests.forEach(function (request) {
  19. //create helperObject for helper function call
  20. var helperObject = {
  21. model: appSettings.model,
  22. };
  23. if(typeof appSettings.getNativeData !== "undefined") {
  24. helperObject.getNativeData = appSettings.getNativeData;
  25. } else {
  26. helperObject.getNativeData = false;
  27. }
  28. if(request.parseImage === "false" || request.parseImage === false) {
  29. helperObject.parseImage = false;
  30. } else {
  31. helperObject.parseImage = true;
  32. }
  33. //create requestObject for api request call
  34. var requestObject = {
  35. v:"1.0",
  36. callback: "JSON_CALLBACK",
  37. };
  38. if(typeof request.items !== "undefined") {
  39. requestObject.num = request.items;
  40. } else {
  41. requestObject.num = appSettings.items;
  42. }
  43. if (requestObject.num === 0 || requestObject.num === '0') {
  44. return false;
  45. }
  46. if(request.path) {
  47. requestObject.q = request.path;
  48. }
  49. // -1 is "no explicit limit". same for NaN value
  50. if(requestObject.num < 0 || isNaN(requestObject.num)) {
  51. requestObject.num = undefined;
  52. }
  53. //get _data for each request
  54. rssFactory.getData(requestObject)
  55. .then(function (_data) {
  56. if (_data) {
  57. apingController.concatToResults(apingRssHelper.getObjectByJsonData(_data, helperObject));
  58. }
  59. });
  60. });
  61. }
  62. }
  63. }]);;"use strict";
  64. jjtApingRss.factory('rssFactory', ['$http', function ($http) {
  65. var rssFactory = {};
  66. rssFactory.getData = function (_requestObject) {
  67. return $http.jsonp(
  68. '//ajax.googleapis.com/ajax/services/feed/load',
  69. {
  70. method: 'GET',
  71. params: _requestObject
  72. }
  73. );
  74. };
  75. return rssFactory;
  76. }]);;"use strict";
  77. jjtApingRss.service('apingRssHelper', ['apingModels', 'apingTimeHelper', 'apingUtilityHelper', function (apingModels, apingTimeHelper, apingUtilityHelper) {
  78. this.getThisPlatformString = function () {
  79. return "rss";
  80. };
  81. this.getObjectByJsonData = function (_data, _helperObject) {
  82. var requestResults = [];
  83. if (_data && _data.data && _data.data.responseData) {
  84. if (_data.data.responseData.feed && _data.data.responseData.feed.entries) {
  85. var _this = this;
  86. angular.forEach(_data.data.responseData.feed.entries, function (value, key) {
  87. var tempResult;
  88. if (_helperObject.getNativeData === true || _helperObject.getNativeData === "true") {
  89. tempResult = value;
  90. } else {
  91. value.blog_link = _data.data.responseData.feed.link || _data.data.responseData.feed.feedUrl || undefined;
  92. value.blog_author = _data.data.responseData.feed.author || _data.data.responseData.feed.title || undefined;
  93. tempResult = _this.getItemByJsonData(value, _helperObject);
  94. }
  95. if (tempResult) {
  96. requestResults.push(tempResult);
  97. }
  98. });
  99. }
  100. }
  101. return requestResults;
  102. };
  103. this.getItemByJsonData = function (_item, _helperObject) {
  104. var returnObject = {};
  105. if (_item && _helperObject.model) {
  106. switch (_helperObject.model) {
  107. case "social":
  108. returnObject = this.getSocialItemByJsonData(_item, _helperObject);
  109. break;
  110. case "native":
  111. case "rss":
  112. returnObject = _item;
  113. break;
  114. default:
  115. return false;
  116. }
  117. }
  118. return returnObject;
  119. };
  120. this.getSocialItemByJsonData = function (_item, _helperObject) {
  121. var socialObject = apingModels.getNew("social", this.getThisPlatformString());
  122. //fill _item in socialObject
  123. $.extend(true, socialObject, {
  124. blog_name: _item.blog_author || undefined,
  125. blog_link: _item.blog_link || undefined,
  126. post_url: _item.link || undefined,
  127. source: (_item.categories && _item.categories.length > 0) ? _item.categories : undefined
  128. });
  129. if (_item.content) {
  130. socialObject.text = apingUtilityHelper.getTextFromHtml(_item.content);
  131. socialObject.caption = _item.title || undefined;
  132. } else {
  133. socialObject.text = _item.title || undefined;
  134. }
  135. if (_item.content && _helperObject.parseImage) {
  136. var imagesArray = apingUtilityHelper.getFirstImageFromHtml(_item.content);
  137. if (imagesArray && imagesArray.length > 1) {
  138. socialObject.img_url = imagesArray[1];
  139. }
  140. }
  141. socialObject.date_time = _item.publishedDate ? new Date(_item.publishedDate) : undefined;
  142. socialObject.timestamp = socialObject.date_time ? socialObject.date_time.getTime() : undefined;
  143. return socialObject;
  144. };
  145. }]);