tunecore-announcer 0.0.2 → 0.1.0

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.
data.tar.gz.sig CHANGED
Binary file
@@ -21,25 +21,43 @@
21
21
  <file leaf-file-name="announcer" pinned="false" current="false" current-in-tab="false">
22
22
  <entry file="file://$PROJECT_DIR$/bin/announcer">
23
23
  <provider selected="true" editor-type-id="text-editor">
24
- <state line="14" column="16" selection-start="360" selection-end="360" vertical-scroll-proportion="0.0">
24
+ <state line="69" column="71" selection-start="2011" selection-end="2011" vertical-scroll-proportion="0.0">
25
25
  <folding />
26
26
  </state>
27
27
  </provider>
28
28
  </entry>
29
29
  </file>
30
- <file leaf-file-name="tunecore-announcer.rb" pinned="false" current="true" current-in-tab="true">
30
+ <file leaf-file-name="tunecore-announcer.rb" pinned="false" current="false" current-in-tab="false">
31
31
  <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer.rb">
32
32
  <provider selected="true" editor-type-id="text-editor">
33
- <state line="4" column="18" selection-start="181" selection-end="181" vertical-scroll-proportion="0.05381166">
33
+ <state line="14" column="0" selection-start="458" selection-end="458" vertical-scroll-proportion="0.0">
34
34
  <folding />
35
35
  </state>
36
36
  </provider>
37
37
  </entry>
38
38
  </file>
39
- <file leaf-file-name="xmpp_connection.rb" pinned="false" current="false" current-in-tab="false">
39
+ <file leaf-file-name="command_dictionary.rb" pinned="false" current="false" current-in-tab="false">
40
+ <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer/command_dictionary.rb">
41
+ <provider selected="true" editor-type-id="text-editor">
42
+ <state line="0" column="71" selection-start="14" selection-end="14" vertical-scroll-proportion="0.0">
43
+ <folding />
44
+ </state>
45
+ </provider>
46
+ </entry>
47
+ </file>
48
+ <file leaf-file-name="xmpp_connection.rb" pinned="false" current="true" current-in-tab="true">
40
49
  <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer/xmpp_connection.rb">
41
50
  <provider selected="true" editor-type-id="text-editor">
42
- <state line="19" column="133" selection-start="404" selection-end="404" vertical-scroll-proportion="0.0">
51
+ <state line="37" column="6" selection-start="786" selection-end="786" vertical-scroll-proportion="0.23542601">
52
+ <folding />
53
+ </state>
54
+ </provider>
55
+ </entry>
56
+ </file>
57
+ <file leaf-file-name="example_dictionary.yml" pinned="false" current="false" current-in-tab="false">
58
+ <entry file="file://$PROJECT_DIR$/examples/example_dictionary.yml">
59
+ <provider selected="true" editor-type-id="text-editor">
60
+ <state line="4" column="34" selection-start="68" selection-end="68" vertical-scroll-proportion="0.0">
43
61
  <folding />
44
62
  </state>
45
63
  </provider>
@@ -130,6 +148,20 @@
130
148
  <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
131
149
  </PATH_ELEMENT>
132
150
  </PATH>
151
+ <PATH>
152
+ <PATH_ELEMENT>
153
+ <option name="myItemId" value="tunecore-announcer" />
154
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
155
+ </PATH_ELEMENT>
156
+ <PATH_ELEMENT>
157
+ <option name="myItemId" value="tunecore-announcer" />
158
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
159
+ </PATH_ELEMENT>
160
+ <PATH_ELEMENT>
161
+ <option name="myItemId" value="examples" />
162
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
163
+ </PATH_ELEMENT>
164
+ </PATH>
133
165
  <PATH>
134
166
  <PATH_ELEMENT>
135
167
  <option name="myItemId" value="tunecore-announcer" />
@@ -164,6 +196,7 @@
164
196
  </navigator>
165
197
  </component>
166
198
  <component name="PropertiesComponent">
199
+ <property name="GoToClass.includeJavaFiles" value="false" />
167
200
  <property name="options.splitter.details.proportions" value="0.2" />
168
201
  <property name="options.splitter.main.proportions" value="0.3" />
169
202
  <property name="options.searchVisible" value="true" />
@@ -270,7 +303,7 @@
270
303
  </todo-panel>
271
304
  </component>
272
305
  <component name="ToolWindowManager">
273
- <frame x="-1823" y="185" width="1524" height="1043" extended-state="0" />
306
+ <frame x="-1872" y="199" width="1524" height="1043" extended-state="0" />
274
307
  <editor active="true" />
275
308
  <layout>
276
309
  <window_info id="Web Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" />
@@ -352,23 +385,37 @@
352
385
  </state>
353
386
  </provider>
354
387
  </entry>
355
- <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer/xmpp_connection.rb">
388
+ <entry file="file://$PROJECT_DIR$/examples/example_dictionary.yml">
356
389
  <provider selected="true" editor-type-id="text-editor">
357
- <state line="19" column="133" selection-start="404" selection-end="404" vertical-scroll-proportion="0.0">
390
+ <state line="4" column="34" selection-start="68" selection-end="68" vertical-scroll-proportion="0.0">
391
+ <folding />
392
+ </state>
393
+ </provider>
394
+ </entry>
395
+ <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer.rb">
396
+ <provider selected="true" editor-type-id="text-editor">
397
+ <state line="14" column="0" selection-start="458" selection-end="458" vertical-scroll-proportion="0.0">
398
+ <folding />
399
+ </state>
400
+ </provider>
401
+ </entry>
402
+ <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer/command_dictionary.rb">
403
+ <provider selected="true" editor-type-id="text-editor">
404
+ <state line="0" column="71" selection-start="14" selection-end="14" vertical-scroll-proportion="0.0">
358
405
  <folding />
359
406
  </state>
360
407
  </provider>
361
408
  </entry>
362
409
  <entry file="file://$PROJECT_DIR$/bin/announcer">
363
410
  <provider selected="true" editor-type-id="text-editor">
364
- <state line="14" column="16" selection-start="360" selection-end="360" vertical-scroll-proportion="0.0">
411
+ <state line="69" column="71" selection-start="2011" selection-end="2011" vertical-scroll-proportion="0.0">
365
412
  <folding />
366
413
  </state>
367
414
  </provider>
368
415
  </entry>
369
- <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer.rb">
416
+ <entry file="file://$PROJECT_DIR$/lib/tunecore-announcer/xmpp_connection.rb">
370
417
  <provider selected="true" editor-type-id="text-editor">
371
- <state line="4" column="18" selection-start="181" selection-end="181" vertical-scroll-proportion="0.05381166">
418
+ <state line="37" column="6" selection-start="786" selection-end="786" vertical-scroll-proportion="0.23542601">
372
419
  <folding />
373
420
  </state>
374
421
  </provider>
@@ -13,6 +13,7 @@ README.rdoc
13
13
  Rakefile
14
14
  bin/announcer
15
15
  lib/tunecore-announcer.rb
16
+ lib/tunecore-announcer/command_dictionary.rb
16
17
  lib/tunecore-announcer/logger.rb
17
18
  lib/tunecore-announcer/utils.rb
18
19
  lib/tunecore-announcer/xmpp_connection.rb
@@ -5,7 +5,7 @@ class AnnouncerLauncher
5
5
 
6
6
  def self.parse_options(args)
7
7
 
8
- mandatory_opts = %w(name_prefix jabber_server jabber_password admin_jids)
8
+ mandatory_opts = %w(name_prefix jabber_server jabber_password admin_jids dictionary_file)
9
9
 
10
10
  options = OpenStruct.new
11
11
  options.jabber_port = 5222
@@ -32,6 +32,10 @@ class AnnouncerLauncher
32
32
  options.admin_jids = admin_jids
33
33
  end
34
34
 
35
+ opts.on("-d", "--dictionary=DICTIONARY_FILE", "A YAML file containing definitions for the commands you want to accept via Jabber") do |dictionary_file|
36
+ options.dictionary_file = dictionary_file
37
+ end
38
+
35
39
  opts.separator ""
36
40
  opts.separator "Optional arguments:"
37
41
 
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module TunecoreAnnouncer
5
- VERSION = '0.0.2'
5
+ VERSION = '0.1.0'
6
6
 
7
7
  require "optparse"
8
8
  require 'ostruct'
@@ -11,4 +11,5 @@ module TunecoreAnnouncer
11
11
  require 'tunecore-announcer/utils'
12
12
  require 'tunecore-announcer/logger'
13
13
  require 'tunecore-announcer/xmpp_connection'
14
+ require 'tunecore-announcer/command_dictionary'
14
15
  end
@@ -0,0 +1,22 @@
1
+ require 'yaml'
2
+
3
+ class TunecoreAnnouncer::CommandDictionary
4
+
5
+ attr_reader :dictionary
6
+
7
+ def initialize(yaml_filename)
8
+ @logger = TunecoreAnnouncer::Logger.instance
9
+ load_dictionary(yaml_filename)
10
+ end
11
+
12
+ def load_dictionary(yaml_filename)
13
+ @logger.info "Loading command dictionary: #{yaml_filename}"
14
+ @dictionary = YAML.load_file(yaml_filename)
15
+ @logger.debug @dictionary.inspect
16
+ end
17
+
18
+ def lookup(message)
19
+ @dictionary[message]
20
+ end
21
+
22
+ end
@@ -23,6 +23,7 @@ class TunecoreAnnouncer::XmppConnection
23
23
 
24
24
  register
25
25
  @logger.info "Connected to XMPP server"
26
+ load_dictionary
26
27
  #@jabber.add(admin_jids)
27
28
  add_admins
28
29
  #@logger.debug "Added #{admin_jid} to roster"
@@ -34,7 +35,7 @@ class TunecoreAnnouncer::XmppConnection
34
35
 
35
36
 
36
37
  def disconnect
37
- admins "Shutting down ... Sayonara!"
38
+ #admins "Shutting down ... Sayonara!"
38
39
  deregister
39
40
  @jabber.disconnect
40
41
  @listener_thread.join
@@ -69,6 +70,10 @@ private
69
70
  end
70
71
  end
71
72
 
73
+ def load_dictionary
74
+ @dictionary = TunecoreAnnouncer::CommandDictionary.new(@options.dictionary_file)
75
+ end
76
+
72
77
  def deregister
73
78
  @logger.debug "Removing registration"
74
79
  client = @jabber.client
@@ -92,16 +97,12 @@ private
92
97
 
93
98
  def process_incoming(message)
94
99
  @logger.debug "Jabber msg from #{message.from}: #{message.body}"
95
- case message.body
96
- when "uptime"
97
- @jabber.deliver(message.from, `uptime`)
98
- when "ps"
99
- @jabber.deliver(message.from, `ps -ef`)
100
- when "hostname"
101
- @jabber.deliver(message.from, `hostname`)
102
- else
103
- @jabber.deliver(message.from, "Sorry, I don't know #{message.body}")
104
- end
100
+ command = @dictionary.lookup(message.body)
101
+ @jabber.deliver(message.from, "I don't know #{message.body}") and return if command.nil?
102
+ @logger.debug "Running command: #{command}"
103
+ output = `#{command}`
104
+ @logger.debug "Replying with #{output}"
105
+ @jabber.deliver(message.from, output)
105
106
  end
106
107
 
107
108
  def set_vcard
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunecore-announcer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Kane
@@ -81,6 +81,7 @@ files:
81
81
  - Rakefile
82
82
  - bin/announcer
83
83
  - lib/tunecore-announcer.rb
84
+ - lib/tunecore-announcer/command_dictionary.rb
84
85
  - lib/tunecore-announcer/logger.rb
85
86
  - lib/tunecore-announcer/utils.rb
86
87
  - lib/tunecore-announcer/xmpp_connection.rb
metadata.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- ��Z��FP�~z�iԅ�X++΀}t�[t�g<����&�fp
2
- 9#R��O&J����\i/1<�/hY0cBY'Fw�X���'�do�w�y�d��u�����= �:�x���'k*�qr}B��{�&����.-�.�㛟m���ZM���'�&�
1
+ ��0�$J�M-�w��o���
2
+ jWb����M�d�.n[~2mN? J��a+Y��/$B寧kƯ�-hPu
3
+ ů����. h�q�Z�k"��x��=��>u�3ڿ#DO�W���5Ǝk��P^X��0�QDzQ��I���*g9�߂���