Class: Sendxmpp::CLI

Inherits:
Thor
  • Object
show all
Includes:
Config
Defined in:
lib/sendxmpp/cli.rb

Overview

Class CLI

Input via STDIN or -m option:

Examples

sendxmpprb -m "server down notification" user [email protected]
echo "server down"|sendxmpprb user [email protected]
...

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Config

#config, #update_config

Constructor Details

#initialize(*args) ⇒ CLI

Public: Initialize a new Object from CLI

args - Arguments, passed to Thor

Raises IniFile::Error on invalid configuration Raises ArgumentError if the main hash key was not found



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sendxmpp/cli.rb', line 39

def initialize(*args)
  super
  local_conf = options.dup
  local_conf.delete_if{|k,v|v.nil?||(v.kind_of?(String) && v.empty?)}
  update_config(local_conf)
  if File.exists?(options[:config])
    conf = IniFile.load(options[:config])["sendxmpp"]
    if conf.nil? || conf.empty?
      raise ArgumentError, "No [sendxmpp] section in ini file found!"
    end
  conf.merge!(local_conf)
  update_config(conf)
  end
  Log.logger.debug("finished loading configuration.")
  $stdout.sync = true
end

Instance Attribute Details

#logObject (readonly)

Public: logger



31
32
33
# File 'lib/sendxmpp/cli.rb', line 31

def log
  @log
end

Instance Method Details

#chat(*jids) ⇒ Object

Public: Send a message to a single/multiple multi user chatrooms.

Messages will be sent to each chat seperately

jids - Array of MUC(Multi user chat) jids.

Examples

chat(["[email protected]"])
chat(["[email protected]", "[email protected]"])

Returns 0 or 1 exit codes



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/sendxmpp/cli.rb', line 99

def chat(*jids)
  Log.logger.debug("Received call for chat method")
  unless jids.kind_of?(Array)
    Log.logger.error("Throwing ArgumentError because Jids is not an array.")
    raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
  end

  if options.message.empty?
    Log.logger.error("No message to send. Exiting.")
    Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
    exit 1
  end

  Message.batch do
    jids.each do |jid|
      Message.message_to_room(jid)
    end
  end

end

#user(*jids) ⇒ Object

Public: Send a message to multiple users.

Message will be sent to each user seperately

jids - Receipient(s) can be one or more

Examples

user(["[email protected]"])
user(["[email protected]", "[email protected]"])
...

Returns 0 or 1 exit codes



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/sendxmpp/cli.rb', line 68

def user(*jids)
  Log.logger.debug("Received call for user method")
  unless jids.kind_of?(Array)
    Log.logger.error("Throwing ArgumentError because Jids is not an array.")
    raise ArgumentError, "Jids needs to be an Array got #{jids.class}"
  end

  if options.message.empty?
    Log.logger.error("No message to send. Exiting.")
    Log.logger.error("See https://github.com/nirnanaaa/sendxmpprb/wiki/Sending-messages for available message formats.")
    exit 1
  end

  Message.batch do
    jids.each do |jid|
      Message.message_to_user(jid)
    end
  end
end