gatsby-source-buzzsprout
Version:
Gatsby plugin to load podcast episodes from Buzzsprout.
74 lines (60 loc) • 2.91 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
// const qs = require('qs');
var fetch = require('node-fetch');
/**
* Todos:
*/
var Buzzsprout = function Buzzsprout(_ref) {
var _this = this;
var token = _ref.token,
podcastId = _ref.podcastId;
(0, _defineProperty2.default)(this, "setHeaders", function (headers) {
if (headers === void 0) {
headers = {};
}
// extract auth values to avoid potential bugs
var _headers = headers,
Authorization = _headers.Authorization,
authorization = _headers.authorization,
newHeaders = (0, _objectWithoutPropertiesLoose2.default)(_headers, ["Authorization", "authorization"]);
var currentHeaders = _this.headers;
_this.headers = _objectSpread({}, currentHeaders, {}, newHeaders);
});
(0, _defineProperty2.default)(this, "request", function (path, params, method) {
if (path === void 0) {
path = '';
}
if (params === void 0) {
params = {};
}
if (method === void 0) {
method = 'GET';
}
// TODO: let query = qs.stringify(params) || '';
var url = _this.baseUrl + path;
return fetch(url, {
method: method,
headers: _this.headers,
cache: 'default'
});
});
(0, _defineProperty2.default)(this, "getEpisodes", function () {
return _this.request('/episodes.json').then(function (res) {
return res.json();
}).catch(console.error);
});
this.token = token;
this.podcastId = podcastId;
this.headers = {
'Access-Control-Allow-Origin': '*',
Authorization: "Token token=" + this.token,
'Content-Type': 'application/json'
};
this.baseUrl = "https://www.buzzsprout.com/api/" + this.podcastId;
};
module.exports = Buzzsprout;