diff options
Diffstat (limited to 'lib/PodcastView.js')
-rw-r--r-- | lib/PodcastView.js | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/lib/PodcastView.js b/lib/PodcastView.js index 1236abd..a760371 100644 --- a/lib/PodcastView.js +++ b/lib/PodcastView.js @@ -91,22 +91,43 @@ function forEachView(feedId, callback, startKey) { } PodcastView.prototype.render = function(episodes, callback) { + var bucket = this.bucket; + var filenameTemplate = this.filenameTemplate; var template = this.template; var data = { view: this, episodes: episodes, - }; - var renderedView = _.template(template)(data); - - saveView(renderedView, callback); + }; + + if (this.renderEach) { + var remainingEpisodes = episodes.length; + var uploadCallback = function(error) { + remainingEpisodes--; + if (remainingEpisodes == 0 || error != null) { + callback(error); + } + }; + + episodes.forEach(function(episode) { + data['episode'] = episode; + + var filename = _.template(filenameTemplate)(data); + var renderedView = _.template(template)(data); + saveView(bucket, filename, renderedView, uploadCallback); + }); + } else { + var filename = _.template(filenameTemplate)(data); + var renderedView = _.template(template)(data); + saveView(bucket, filename, renderedView, callback); + } }; -function saveView(renderedView, callback) { +function saveView(bucket, filename, renderedView, callback) { var params = { - Bucket: this.bucket, - Key: this.key, - Body: renderedView + Bucket: bucket, + Key: filename, + Body: renderedView, }; s3.putObject(params, callback); |