sendxmpp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.gitignore +4 -0
 - data/.travis.yml +15 -0
 - data/Gemfile +3 -0
 - data/Gemfile.lock +24 -0
 - data/README.md +0 -0
 - data/TODO.md +0 -0
 - data/bin/sendxmpprb +7 -0
 - data/lib/sendxmpp.rb +8 -0
 - data/lib/sendxmpp/cli.rb +120 -0
 - data/lib/sendxmpp/config.rb +49 -0
 - data/lib/sendxmpp/log.rb +20 -0
 - data/lib/sendxmpp/message.rb +172 -0
 - data/lib/sendxmpp/version.rb +5 -0
 - data/sendxmpp.gemspec +29 -0
 - data/settings.ini.sample +42 -0
 - metadata +136 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0a0e5fe224abe1427c9c2523e9ad3b0e86422f8d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 0e22571caec9351c6467c9fdc9435933f3d68755
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8ca65c1302527956fba6ade6e5b8127b98fb04e0604aac0d2b66cb5d152f1cb9b1b878a4dad2ed7e92d5207582d453a2db38e762d070da783f65a3cc7646dd71
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 50dbad308aaca2a54628e63743d006f9caea03f34e33176312094248dbe96af041bde843fce035da23d378ab573d191be0a638cf23ed431894cbbc49a45c275b
         
     | 
    
        data/.gitignore
    ADDED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            PATH
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: .
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                sendxmpp (0.0.1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  hashr
         
     | 
| 
      
 6 
     | 
    
         
            +
                  inifile (~> 2.0)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  thor (~> 0.19, >= 0.19.1)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  xmpp4r (~> 0.5)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 11 
     | 
    
         
            +
              remote: https://rubygems.org/
         
     | 
| 
      
 12 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 13 
     | 
    
         
            +
                hashr (0.0.22)
         
     | 
| 
      
 14 
     | 
    
         
            +
                inifile (2.0.2)
         
     | 
| 
      
 15 
     | 
    
         
            +
                rake (10.3.1)
         
     | 
| 
      
 16 
     | 
    
         
            +
                thor (0.19.1)
         
     | 
| 
      
 17 
     | 
    
         
            +
                xmpp4r (0.5.6)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 20 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 23 
     | 
    
         
            +
              rake (~> 10.1)
         
     | 
| 
      
 24 
     | 
    
         
            +
              sendxmpp!
         
     | 
    
        data/README.md
    ADDED
    
    | 
         
            File without changes
         
     | 
    
        data/TODO.md
    ADDED
    
    | 
         
            File without changes
         
     | 
    
        data/bin/sendxmpprb
    ADDED
    
    
    
        data/lib/sendxmpp.rb
    ADDED
    
    
    
        data/lib/sendxmpp/cli.rb
    ADDED
    
    | 
         @@ -0,0 +1,120 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'thor'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'inifile'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Sendxmpp
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              # Class CLI
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              # Input via STDIN or -m option:
         
     | 
| 
      
 9 
     | 
    
         
            +
              #
         
     | 
| 
      
 10 
     | 
    
         
            +
              # Examples
         
     | 
| 
      
 11 
     | 
    
         
            +
              #   sendxmpprb -m "server down notification" user mosny@jabber.org
         
     | 
| 
      
 12 
     | 
    
         
            +
              #   echo "server down"|sendxmpprb user mosny@jabber.org
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   ...
         
     | 
| 
      
 14 
     | 
    
         
            +
              #
         
     | 
| 
      
 15 
     | 
    
         
            +
              class CLI < Thor
         
     | 
| 
      
 16 
     | 
    
         
            +
                include Config
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                class_option :server, default: "", type: :string, aliases: "-s", required: false
         
     | 
| 
      
 19 
     | 
    
         
            +
                class_option :port, default: 5222, type: :numeric, aliases: "-p", required: false
         
     | 
| 
      
 20 
     | 
    
         
            +
                class_option :tls, default: true, type: :boolean, aliases: "-t", required: false
         
     | 
| 
      
 21 
     | 
    
         
            +
                class_option :tls_verify_peer, default: true, type: :boolean, required: false
         
     | 
| 
      
 22 
     | 
    
         
            +
                class_option :tls_ca, default: "", type: :string, required: false
         
     | 
| 
      
 23 
     | 
    
         
            +
                class_option :resource, default: "Sendxmpp", type: :string, required: false
         
     | 
| 
      
 24 
     | 
    
         
            +
                class_option :password, default: "", type: :string, required: false
         
     | 
| 
      
 25 
     | 
    
         
            +
                class_option :message, default: "", type: :string, aliases: '-m', required: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                class_option :jid, default: "", type: :string, required: false
         
     | 
| 
      
 27 
     | 
    
         
            +
                class_option :config, default: "#{ENV['HOME']}/.sendxmpprbrc", type: :string, aliases: "-c", required: false
         
     | 
| 
      
 28 
     | 
    
         
            +
                class_option :logfile, default: nil, aliases: '-l', required: false
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                # Public: logger
         
     | 
| 
      
 31 
     | 
    
         
            +
                attr_reader :log
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # Public: Initialize a new Object from CLI
         
     | 
| 
      
 34 
     | 
    
         
            +
                #
         
     | 
| 
      
 35 
     | 
    
         
            +
                # args - Arguments, passed to Thor
         
     | 
| 
      
 36 
     | 
    
         
            +
                #
         
     | 
| 
      
 37 
     | 
    
         
            +
                # Raises IniFile::Error on invalid configuration
         
     | 
| 
      
 38 
     | 
    
         
            +
                # Raises ArgumentError if the main hash key was not found
         
     | 
| 
      
 39 
     | 
    
         
            +
                def initialize(*args)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  super
         
     | 
| 
      
 41 
     | 
    
         
            +
                  if File.exists?(options[:config])
         
     | 
| 
      
 42 
     | 
    
         
            +
                    conf = IniFile.load(options[:config])["sendxmpp"]
         
     | 
| 
      
 43 
     | 
    
         
            +
                    if conf.nil? || conf.empty?
         
     | 
| 
      
 44 
     | 
    
         
            +
                      raise ArgumentError, "No [sendxmpp] section in ini file found!"
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                    local_conf = options.dup
         
     | 
| 
      
 47 
     | 
    
         
            +
                    local_conf.delete_if{|k,v|v.nil?||(v.kind_of?(String) && v.empty?)}
         
     | 
| 
      
 48 
     | 
    
         
            +
                    conf.merge!(local_conf)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    update_config(conf)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
                  Log.logger.debug("finished loading configuration.")
         
     | 
| 
      
 52 
     | 
    
         
            +
                  $stdout.sync = true
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                desc "user [USER1],[USER2],...", "send a message to jabber users"
         
     | 
| 
      
 56 
     | 
    
         
            +
                # Public: Send a message to multiple users.
         
     | 
| 
      
 57 
     | 
    
         
            +
                #         Message will be sent to each user seperately
         
     | 
| 
      
 58 
     | 
    
         
            +
                #
         
     | 
| 
      
 59 
     | 
    
         
            +
                # jids - Receipient(s) can be one or more
         
     | 
| 
      
 60 
     | 
    
         
            +
                #
         
     | 
| 
      
 61 
     | 
    
         
            +
                # Examples
         
     | 
| 
      
 62 
     | 
    
         
            +
                #   user(["mosny@jabber.org"])
         
     | 
| 
      
 63 
     | 
    
         
            +
                #   user(["mosny@jabber.org", "someone@jabber.org"])
         
     | 
| 
      
 64 
     | 
    
         
            +
                #   ...
         
     | 
| 
      
 65 
     | 
    
         
            +
                #
         
     | 
| 
      
 66 
     | 
    
         
            +
                # Returns 0 or 1 exit codes
         
     | 
| 
      
 67 
     | 
    
         
            +
                def user(*jids)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  Log.logger.debug("Received call for user method")
         
     | 
| 
      
 69 
     | 
    
         
            +
                  unless jids.kind_of?(Array)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    Log.logger.error("Throwing ArgumentError because Jids is not an array.")
         
     | 
| 
      
 71 
     | 
    
         
            +
                    raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                  if options.message.empty?
         
     | 
| 
      
 75 
     | 
    
         
            +
                    Log.logger.error("No message to send. Exiting.")
         
     | 
| 
      
 76 
     | 
    
         
            +
                    Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
         
     | 
| 
      
 77 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 78 
     | 
    
         
            +
                  end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  Message.batch do
         
     | 
| 
      
 81 
     | 
    
         
            +
                    jids.each do |jid|
         
     | 
| 
      
 82 
     | 
    
         
            +
                      Message.message_to_user(jid)
         
     | 
| 
      
 83 
     | 
    
         
            +
                    end
         
     | 
| 
      
 84 
     | 
    
         
            +
                  end
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                desc "chat [CHAT1],[CHAT2],...", "send a message to multiple multi user chats"
         
     | 
| 
      
 88 
     | 
    
         
            +
                # Public: Send a message to a single/multiple multi user chatrooms.
         
     | 
| 
      
 89 
     | 
    
         
            +
                #         Messages will be sent to each chat seperately
         
     | 
| 
      
 90 
     | 
    
         
            +
                #
         
     | 
| 
      
 91 
     | 
    
         
            +
                # jids - Array of MUC(Multi user chat) jids.
         
     | 
| 
      
 92 
     | 
    
         
            +
                #
         
     | 
| 
      
 93 
     | 
    
         
            +
                # Examples
         
     | 
| 
      
 94 
     | 
    
         
            +
                #   chat(["edv@conference.jabber.org"])
         
     | 
| 
      
 95 
     | 
    
         
            +
                #   chat(["edv@conference.jabber.org", "staff@conference.jabber.org"])
         
     | 
| 
      
 96 
     | 
    
         
            +
                #
         
     | 
| 
      
 97 
     | 
    
         
            +
                # Returns 0 or 1 exit codes
         
     | 
| 
      
 98 
     | 
    
         
            +
                def chat(*jids)
         
     | 
| 
      
 99 
     | 
    
         
            +
                  Log.logger.debug("Received call for chat method")
         
     | 
| 
      
 100 
     | 
    
         
            +
                  unless jids.kind_of?(Array)
         
     | 
| 
      
 101 
     | 
    
         
            +
                    Log.logger.error("Throwing ArgumentError because Jids is not an array.")
         
     | 
| 
      
 102 
     | 
    
         
            +
                    raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
         
     | 
| 
      
 103 
     | 
    
         
            +
                  end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                  if options.message.empty?
         
     | 
| 
      
 106 
     | 
    
         
            +
                    Log.logger.error("No message to send. Exiting.")
         
     | 
| 
      
 107 
     | 
    
         
            +
                    Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
         
     | 
| 
      
 108 
     | 
    
         
            +
                    exit 1
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                  Message.batch do
         
     | 
| 
      
 112 
     | 
    
         
            +
                    jids.each do |jid|
         
     | 
| 
      
 113 
     | 
    
         
            +
                      Message.message_to_room(jid)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
              end
         
     | 
| 
      
 120 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'hashr'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Sendxmpp
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # Private: This class provides access to the main configuration
         
     | 
| 
      
 5 
     | 
    
         
            +
              #
         
     | 
| 
      
 6 
     | 
    
         
            +
              # Should not be used without Config module
         
     | 
| 
      
 7 
     | 
    
         
            +
              class InternalConfiguration < Hashr
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # Public: Static singleton
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Gets a singleton object
         
     | 
| 
      
 12 
     | 
    
         
            +
                def self.config
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @conf ||= self.new
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                # Public: Merge new configuration
         
     | 
| 
      
 17 
     | 
    
         
            +
                #
         
     | 
| 
      
 18 
     | 
    
         
            +
                # Use Config.update_config instead!
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # Returns nothing
         
     | 
| 
      
 21 
     | 
    
         
            +
                def self.merge_config(newconfig)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @conf = self.new(newconfig)
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              # Public: Configuration module. Should be included
         
     | 
| 
      
 27 
     | 
    
         
            +
              #
         
     | 
| 
      
 28 
     | 
    
         
            +
              # Usage
         
     | 
| 
      
 29 
     | 
    
         
            +
              #   include Config
         
     | 
| 
      
 30 
     | 
    
         
            +
              #
         
     | 
| 
      
 31 
     | 
    
         
            +
              #   def some_method
         
     | 
| 
      
 32 
     | 
    
         
            +
              #     config.configbla
         
     | 
| 
      
 33 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 34 
     | 
    
         
            +
              module Config
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                # Public: Gets the configuration from InternalConfiguration
         
     | 
| 
      
 37 
     | 
    
         
            +
                #
         
     | 
| 
      
 38 
     | 
    
         
            +
                # Returns a singleton object of InternalConfiguration
         
     | 
| 
      
 39 
     | 
    
         
            +
                def config
         
     | 
| 
      
 40 
     | 
    
         
            +
                  InternalConfiguration.config
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                # Public: Updates the configuration of InternalConfiguration
         
     | 
| 
      
 44 
     | 
    
         
            +
                #
         
     | 
| 
      
 45 
     | 
    
         
            +
                def update_config(new)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  InternalConfiguration.merge_config(new)
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/sendxmpp/log.rb
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'logger'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Sendxmpp
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Log < Logger
         
     | 
| 
      
 4 
     | 
    
         
            +
                include Config
         
     | 
| 
      
 5 
     | 
    
         
            +
                attr_accessor :logger_ins
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.logger
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @logger ||= self.new
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 12 
     | 
    
         
            +
                  if config.logfile
         
     | 
| 
      
 13 
     | 
    
         
            +
                    super(config.logfile)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  else
         
     | 
| 
      
 15 
     | 
    
         
            +
                    super(STDOUT)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  self.level = config.loglevel.to_i || 2
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,172 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'xmpp4r/client'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Sendxmpp
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # Public: Message class
         
     | 
| 
      
 5 
     | 
    
         
            +
              #
         
     | 
| 
      
 6 
     | 
    
         
            +
              # requires an initialized Config class.
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              class Message
         
     | 
| 
      
 9 
     | 
    
         
            +
                include Config
         
     | 
| 
      
 10 
     | 
    
         
            +
                include ::Jabber
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                # Public: Getter for the batch status
         
     | 
| 
      
 13 
     | 
    
         
            +
                attr_reader :batch
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Public: Getter / Setter for the jabber client
         
     | 
| 
      
 16 
     | 
    
         
            +
                attr_accessor :client
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # Public: Getter for receipients
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # Returns an Array
         
     | 
| 
      
 21 
     | 
    
         
            +
                def receipients
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @receipients ||= []
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                # Public: Initializer
         
     | 
| 
      
 26 
     | 
    
         
            +
                #
         
     | 
| 
      
 27 
     | 
    
         
            +
                #
         
     | 
| 
      
 28 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @batch=false
         
     | 
| 
      
 30 
     | 
    
         
            +
                  if config.jid.nil? || config.jid.empty?
         
     | 
| 
      
 31 
     | 
    
         
            +
                    raise ArgumentError, <<-RAISE
         
     | 
| 
      
 32 
     | 
    
         
            +
                    \rJID is not configured. Please use the configuration file or specify the
         
     | 
| 
      
 33 
     | 
    
         
            +
                    \r-j option.
         
     | 
| 
      
 34 
     | 
    
         
            +
                    RAISE
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  jid = JID.new(config.jid)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  Log.logger.debug("Initializing a new Jabber client instance.")
         
     | 
| 
      
 39 
     | 
    
         
            +
                  self.client = Client.new(jid)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  Log.logger.debug("Initialized a new Jabber client instance.")
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  Log.logger.debug("Connecting to Jabber server.")
         
     | 
| 
      
 43 
     | 
    
         
            +
                  client.connect(config.server, config.port)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  Log.logger.debug("Connected to Jabber server.")
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  Log.logger.debug("Authenticating with Jabber server.")
         
     | 
| 
      
 47 
     | 
    
         
            +
                  client.auth(config.password)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  Log.logger.debug("Authenticating with Jabber server.")
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # Public: Singleton object getter
         
     | 
| 
      
 52 
     | 
    
         
            +
                def self.myself
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @self ||= self.new
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                # Public: Batch relay
         
     | 
| 
      
 57 
     | 
    
         
            +
                def self.batch(&block)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  myself.process_batch(&block)
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                # Public: Send a message to a user
         
     | 
| 
      
 62 
     | 
    
         
            +
                #
         
     | 
| 
      
 63 
     | 
    
         
            +
                # user - Receipient
         
     | 
| 
      
 64 
     | 
    
         
            +
                #
         
     | 
| 
      
 65 
     | 
    
         
            +
                def self.message_to_user(user)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  myself.message(type: :user, user: user)
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                # Public: Send a message to a chatroom
         
     | 
| 
      
 70 
     | 
    
         
            +
                #
         
     | 
| 
      
 71 
     | 
    
         
            +
                # room - Room to send message to
         
     | 
| 
      
 72 
     | 
    
         
            +
                #
         
     | 
| 
      
 73 
     | 
    
         
            +
                def self.message_to_room(room)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  myself.message(type: :group, user: room)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                # Public: Split a special formatted JID into the following
         
     | 
| 
      
 78 
     | 
    
         
            +
                #         parts:
         
     | 
| 
      
 79 
     | 
    
         
            +
                #         JID - normal XMPP JID
         
     | 
| 
      
 80 
     | 
    
         
            +
                #         Password - XMPP room password
         
     | 
| 
      
 81 
     | 
    
         
            +
                #
         
     | 
| 
      
 82 
     | 
    
         
            +
                # user - JID to split up
         
     | 
| 
      
 83 
     | 
    
         
            +
                #
         
     | 
| 
      
 84 
     | 
    
         
            +
                # Returns an Array of 2 elements
         
     | 
| 
      
 85 
     | 
    
         
            +
                def split_password(user)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  user.split(":")
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                # Public: Send a message
         
     | 
| 
      
 90 
     | 
    
         
            +
                #
         
     | 
| 
      
 91 
     | 
    
         
            +
                # options - Message hash options
         
     | 
| 
      
 92 
     | 
    
         
            +
                #
         
     | 
| 
      
 93 
     | 
    
         
            +
                # Examples
         
     | 
| 
      
 94 
     | 
    
         
            +
                #   message(type: :user, user: "jid@server.com")
         
     | 
| 
      
 95 
     | 
    
         
            +
                #   message(type: :group, user: "jid@conference.server.com:password")
         
     | 
| 
      
 96 
     | 
    
         
            +
                #
         
     | 
| 
      
 97 
     | 
    
         
            +
                def message(options)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  return if config.message.empty?
         
     | 
| 
      
 99 
     | 
    
         
            +
                  if batch == true
         
     | 
| 
      
 100 
     | 
    
         
            +
                    receipients << options
         
     | 
| 
      
 101 
     | 
    
         
            +
                  else
         
     | 
| 
      
 102 
     | 
    
         
            +
                    if options[:type] == :user
         
     | 
| 
      
 103 
     | 
    
         
            +
                      send_message(config.message, options[:user])
         
     | 
| 
      
 104 
     | 
    
         
            +
                    else
         
     | 
| 
      
 105 
     | 
    
         
            +
                      group, password = split_password(options[:user])
         
     | 
| 
      
 106 
     | 
    
         
            +
                      send_muc_message(config.message, group, password)
         
     | 
| 
      
 107 
     | 
    
         
            +
                    end
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
                end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                # Public: Enables batch procession for this session
         
     | 
| 
      
 112 
     | 
    
         
            +
                #
         
     | 
| 
      
 113 
     | 
    
         
            +
                # block - Block to execute as a batch
         
     | 
| 
      
 114 
     | 
    
         
            +
                #
         
     | 
| 
      
 115 
     | 
    
         
            +
                # Returns false
         
     | 
| 
      
 116 
     | 
    
         
            +
                def process_batch(&block)
         
     | 
| 
      
 117 
     | 
    
         
            +
                  Log.logger.info("Batch procession started.")
         
     | 
| 
      
 118 
     | 
    
         
            +
                  unless block_given?
         
     | 
| 
      
 119 
     | 
    
         
            +
                    raise ArgumentError, "Do not use this function without a block"
         
     | 
| 
      
 120 
     | 
    
         
            +
                  end
         
     | 
| 
      
 121 
     | 
    
         
            +
                  @batch=true
         
     | 
| 
      
 122 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 123 
     | 
    
         
            +
                  send_batch
         
     | 
| 
      
 124 
     | 
    
         
            +
                  @batch=false
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                # Public: Send a message to a single user
         
     | 
| 
      
 128 
     | 
    
         
            +
                #
         
     | 
| 
      
 129 
     | 
    
         
            +
                # user - JID of the receipient
         
     | 
| 
      
 130 
     | 
    
         
            +
                #
         
     | 
| 
      
 131 
     | 
    
         
            +
                # Returns nothing
         
     | 
| 
      
 132 
     | 
    
         
            +
                def send_message(user)
         
     | 
| 
      
 133 
     | 
    
         
            +
                  Log.logger.debug("sending message to user %s" % user)
         
     | 
| 
      
 134 
     | 
    
         
            +
                  m = Jabber::Message.new(user, config.message)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  client.send(m)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  Log.logger.debug("sent message")
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                # Public: Send a message to a MUC (Multi User Chat)
         
     | 
| 
      
 140 
     | 
    
         
            +
                #
         
     | 
| 
      
 141 
     | 
    
         
            +
                # room - Room to send the message to
         
     | 
| 
      
 142 
     | 
    
         
            +
                # password - Password for the chatroom if required
         
     | 
| 
      
 143 
     | 
    
         
            +
                #
         
     | 
| 
      
 144 
     | 
    
         
            +
                # Returns nothing
         
     | 
| 
      
 145 
     | 
    
         
            +
                def send_muc_message(room, password=nil)
         
     | 
| 
      
 146 
     | 
    
         
            +
                  Log.logger.debug("including file xmpp4r/muc")
         
     | 
| 
      
 147 
     | 
    
         
            +
                  require 'xmpp4r/muc'
         
     | 
| 
      
 148 
     | 
    
         
            +
                  m = Jabber::Message.new(room, config.message)
         
     | 
| 
      
 149 
     | 
    
         
            +
                  muc = MUC::MUCClient.new(client)
         
     | 
| 
      
 150 
     | 
    
         
            +
                  if !muc.active?
         
     | 
| 
      
 151 
     | 
    
         
            +
                    Log.logger.info("Joining room %s" % room)
         
     | 
| 
      
 152 
     | 
    
         
            +
                    muc.join(JID.new(room + '/' + config.resource), password)
         
     | 
| 
      
 153 
     | 
    
         
            +
                    Log.logger.info("Joined room %s" % room)
         
     | 
| 
      
 154 
     | 
    
         
            +
                  end
         
     | 
| 
      
 155 
     | 
    
         
            +
                  muc.send m
         
     | 
| 
      
 156 
     | 
    
         
            +
                end
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
                # Public: Send the batch out
         
     | 
| 
      
 159 
     | 
    
         
            +
                def send_batch
         
     | 
| 
      
 160 
     | 
    
         
            +
                  receipients.flatten.each do |rcpt|
         
     | 
| 
      
 161 
     | 
    
         
            +
                    user, password = split_password(rcpt[:user])
         
     | 
| 
      
 162 
     | 
    
         
            +
                    if rcpt[:type] == :user
         
     | 
| 
      
 163 
     | 
    
         
            +
                      send_message(user)
         
     | 
| 
      
 164 
     | 
    
         
            +
                    elsif rcpt[:type] == :group
         
     | 
| 
      
 165 
     | 
    
         
            +
                      send_muc_message(user, password)
         
     | 
| 
      
 166 
     | 
    
         
            +
                    end
         
     | 
| 
      
 167 
     | 
    
         
            +
                    Log.logger.debug("Removing item %p from queue" % rcpt)
         
     | 
| 
      
 168 
     | 
    
         
            +
                    receipients.delete(rcpt)
         
     | 
| 
      
 169 
     | 
    
         
            +
                  end
         
     | 
| 
      
 170 
     | 
    
         
            +
                end
         
     | 
| 
      
 171 
     | 
    
         
            +
              end
         
     | 
| 
      
 172 
     | 
    
         
            +
            end
         
     | 
    
        data/sendxmpp.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.push File.expand_path("../lib", __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "sendxmpp/version"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.name        = "sendxmpp"
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.version     = Sendxmpp::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.authors     = ["Florian Kasper"]
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.email       = ["florian.kasper@corscience.de"]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.homepage    = "http://git.er.corscience.de"
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.summary     = %q{Send messages from the console to a XMPP server}
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.description = %q{Send messages from the console to a XMPP server}
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              s.rubyforge_project = "sendxmpp"
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.license = "MIT"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_runtime_dependency "thor", "~> 0.19", '>= 0.19.1'
         
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_runtime_dependency "inifile", "~> 2.0"
         
     | 
| 
      
 25 
     | 
    
         
            +
              s.add_runtime_dependency "xmpp4r", "~> 0.5"
         
     | 
| 
      
 26 
     | 
    
         
            +
              s.add_dependency "hashr"
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              s.add_development_dependency "rake", "~> 10.1"
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
    
        data/settings.ini.sample
    ADDED
    
    | 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            [sendxmpp]
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # The JID of the sending user
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Default: ""
         
     | 
| 
      
 5 
     | 
    
         
            +
            jid=bla@jabberdomain.example.com
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            # The Password of the sending user
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Default: ""
         
     | 
| 
      
 9 
     | 
    
         
            +
            # password=
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            # The Resource to send messages from
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Default: Sendxmpp
         
     | 
| 
      
 13 
     | 
    
         
            +
            # resource=YODA
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            # Use TLS
         
     | 
| 
      
 16 
     | 
    
         
            +
            # Default: true
         
     | 
| 
      
 17 
     | 
    
         
            +
            # tls=true
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            # Port of the Jabber Server
         
     | 
| 
      
 20 
     | 
    
         
            +
            # Default: 5222
         
     | 
| 
      
 21 
     | 
    
         
            +
            # port=5222
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            # Server to send messages over. If no server is provided DNS SRV record from jid will be used
         
     | 
| 
      
 24 
     | 
    
         
            +
            # Default: ""
         
     | 
| 
      
 25 
     | 
    
         
            +
            # server=jabber.org
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # Verify TLS identity.
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Default: true
         
     | 
| 
      
 29 
     | 
    
         
            +
            # tls_verify_peer=true
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            # Logfile to log in to
         
     | 
| 
      
 32 
     | 
    
         
            +
            # Default: STDOUT
         
     | 
| 
      
 33 
     | 
    
         
            +
            # logfile = "/var/log/sendxmpp.log"
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            # Loglevel
         
     | 
| 
      
 36 
     | 
    
         
            +
            # VALUES:
         
     | 
| 
      
 37 
     | 
    
         
            +
            #   err   - 3
         
     | 
| 
      
 38 
     | 
    
         
            +
            #   warn  - 2
         
     | 
| 
      
 39 
     | 
    
         
            +
            #   info  - 1
         
     | 
| 
      
 40 
     | 
    
         
            +
            #   debug - 0
         
     | 
| 
      
 41 
     | 
    
         
            +
            # Default: 2
         
     | 
| 
      
 42 
     | 
    
         
            +
            loglevel = 2
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,136 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: sendxmpp
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Florian Kasper
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-05-14 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: thor
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0.19'
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 0.19.1
         
     | 
| 
      
 23 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 24 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: '0.19'
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 0.19.1
         
     | 
| 
      
 33 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 34 
     | 
    
         
            +
              name: inifile
         
     | 
| 
      
 35 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 36 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 37 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 39 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
      
 40 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 41 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 42 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 43 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 44 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 45 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 46 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
      
 47 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 48 
     | 
    
         
            +
              name: xmpp4r
         
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 50 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 51 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 52 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                    version: '0.5'
         
     | 
| 
      
 54 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 55 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 58 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 59 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 60 
     | 
    
         
            +
                    version: '0.5'
         
     | 
| 
      
 61 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 62 
     | 
    
         
            +
              name: hashr
         
     | 
| 
      
 63 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 64 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 65 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 66 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 67 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 68 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 69 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 70 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 71 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 72 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 73 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 74 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 75 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 76 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 77 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 78 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 79 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 80 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 81 
     | 
    
         
            +
                    version: '10.1'
         
     | 
| 
      
 82 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 83 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 84 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 85 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 86 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 87 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 88 
     | 
    
         
            +
                    version: '10.1'
         
     | 
| 
      
 89 
     | 
    
         
            +
            description: Send messages from the console to a XMPP server
         
     | 
| 
      
 90 
     | 
    
         
            +
            email:
         
     | 
| 
      
 91 
     | 
    
         
            +
            - florian.kasper@corscience.de
         
     | 
| 
      
 92 
     | 
    
         
            +
            executables:
         
     | 
| 
      
 93 
     | 
    
         
            +
            - sendxmpprb
         
     | 
| 
      
 94 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 95 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 96 
     | 
    
         
            +
            files:
         
     | 
| 
      
 97 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 98 
     | 
    
         
            +
            - ".travis.yml"
         
     | 
| 
      
 99 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 100 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
      
 101 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 102 
     | 
    
         
            +
            - TODO.md
         
     | 
| 
      
 103 
     | 
    
         
            +
            - bin/sendxmpprb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/sendxmpp.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - lib/sendxmpp/cli.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/sendxmpp/config.rb
         
     | 
| 
      
 107 
     | 
    
         
            +
            - lib/sendxmpp/log.rb
         
     | 
| 
      
 108 
     | 
    
         
            +
            - lib/sendxmpp/message.rb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - lib/sendxmpp/version.rb
         
     | 
| 
      
 110 
     | 
    
         
            +
            - sendxmpp.gemspec
         
     | 
| 
      
 111 
     | 
    
         
            +
            - settings.ini.sample
         
     | 
| 
      
 112 
     | 
    
         
            +
            homepage: http://git.er.corscience.de
         
     | 
| 
      
 113 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 114 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 115 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 116 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 117 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 118 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 119 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 120 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 121 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 122 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 123 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 124 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 125 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 126 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 127 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 128 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 129 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 130 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 131 
     | 
    
         
            +
            rubyforge_project: sendxmpp
         
     | 
| 
      
 132 
     | 
    
         
            +
            rubygems_version: 2.2.2
         
     | 
| 
      
 133 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 134 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 135 
     | 
    
         
            +
            summary: Send messages from the console to a XMPP server
         
     | 
| 
      
 136 
     | 
    
         
            +
            test_files: []
         
     |