Sha256: 6fac88b9ca4cf643128550c33746812323aa8fcaedb7a9cf2f992f180015e3fa

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

# -*- encoding : utf-8 -*-
require 'rest_client'
require 'pp'
require 'json'

module Lolcommits
  class Lolsrv < Plugin
    def initialize(runner)
      super
      self.options << 'server'
    end

    def run_postcapture
      return unless valid_configuration?
      fork { sync }
    end

    def configured?
      !configuration['enabled'].nil? && configuration['server']
    end

    def sync
      existing = existing_lols
      unless existing.nil?
        Dir[self.runner.config.loldir + '/*.{jpg,gif}'].each do |item|
          sha = File.basename(item, '.*')
          unless existing.include?(sha) || sha == 'tmp_snapshot'
            upload(item, sha)
          end
        end
      end
    end

    def existing_lols
      lols = JSON.parse(
      RestClient.get(configuration['server'] + '/lols'))
      lols.map { |lol| lol['sha'] }
    rescue => e
      log_error(e, "ERROR: existing lols could not be retrieved #{e.class} - #{e.message}")
      return nil
    end

    def upload(file, sha)
      RestClient.post(configuration['server'] + '/uplol',
                      :lol => File.new(file),
                      :url => self.runner.url + sha,
                      :repo => self.runner.repo,
                      :date => File.ctime(file),
                      :sha => sha)
    rescue => e
      log_error(e, "ERROR: Upload of lol #{sha} FAILED #{e.class} - #{e.message}")
    end

    def self.name
      'lolsrv'
    end

    def self.runner_order
      :postcapture
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lolcommits-0.5.6 lib/lolcommits/plugins/lolsrv.rb
lolcommits-0.5.5 lib/lolcommits/plugins/lolsrv.rb