Sha256: 3ffbb4ec9804ab1d752c302de30afc45d64e7899ac4592902112fa01b2557bf2

Contents?: true

Size: 1.29 KB

Versions: 6

Compression:

Stored size: 1.29 KB

Contents

require "blather/client/dsl"
require "drb"

module Saber
  module AutoFetcher
    class Client
      class << self
        def start
          c = Client.new
          c.start

          EM.run { c.run }
        end
      end

      include Blather::DSL

      attr_reader :fetcher

      def initialize
        @fetcher = Fetcher.new
      end

      def run
        client.run
      end

      def start
        rc = Rc.client.xmpp
        setup rc.jid, rc.password, rc.host, rc.port
        when_ready { Saber.ui.say ">> Connected to xmpp at #{jid}" }
        disconnected { client.connect }

        message :chat?, :body, :from => /#{Rc.server.xmpp.jid}/ do |m|
          process_msg m.body
        end
      end

      def stop
        @client.close!
      end

    protected

      def process_msg(body)
        files = body.split("\n")
        Saber.ui.debug files.map{|v| "RECV #{v}"}.join("\n")
        fetcher.add *files
      end
    end

    class DRbClient
      attr_reader :server

      def initialize
        DRb.start_service
        @server = DRbObject.new_with_uri(Rc.drb_uri)
        Saber.ui.debug ">> DRbClient connected to #{Rc.drb_uri}"
      end

      def add(*names)
        Saber.ui.debug "DRbClient-ADD #{names.inspect}"
        server.add(*names)
      end
    end
  end
end

# vim: fdn=4

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
saber-1.2.4 lib/saber/autofetcher/client.rb
saber-1.2.3 lib/saber/autofetcher/client.rb
saber-1.2.2 lib/saber/autofetcher/client.rb
saber-1.2.1 lib/saber/autofetcher/client.rb
saber-1.2.0 lib/saber/autofetcher/client.rb
saber-1.1.1 lib/saber/autofetcher/client.rb