Sha256: 7e605bb73c2df6c17ea3b352a051f2af6b426b4fffe01c41e570f426b4f70ee9

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

require 'json'

module Junkie
  module Notification

    # This module writes all completed episodes to a log file which could be
    # handled by tools like series to get the right series name for an episode
    class Dumper
      include Log, Config

      DEFAULT_CONFIG = {
        enabled: false,
        dump_file: "",
      }

      def initialize(channels)
        @channels = channels
        @config = Config.get_config(self)

        if @config[:enabled] and @config[:dump_file] != ""

          # bind to channel
          @channels[:notifications].subscribe do |episode|
            next unless episode.status == :extracted

            log.info("Got an extracted episode from the channel: #{ episode }")
            dump_episode(episode)
          end

        else
          log.info("Dumper is disabled or no dump_file has been configured")
        end
      end

      def dump_episode(episode)
        data = []

        if File.file? @config[:dump_file]
          loaded = JSON.load(File.read(@config[:dump_file]))
          ( data = loaded ) if loaded.is_a? Array
        end

        data << {
          id: episode.id,
          series: episode.series,
          extracted_at: DateTime.now
        }

        open(@config[:dump_file], "w") do |f|
          f.write(JSON.dump(data))
        end

      rescue Exception => e
        log.error(e)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
junkie-0.1.3 lib/junkie/notification/dumper.rb
junkie-0.1.2 lib/junkie/notification/dumper.rb
junkie-0.1.1 lib/junkie/notification/dumper.rb
junkie-0.1.0 lib/junkie/notification/dumper.rb
junkie-0.0.15 lib/junkie/notification/dumper.rb