punchblock-console 0.1.2 → 0.1.3

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/bin/pbconsole CHANGED
@@ -21,11 +21,8 @@ option_parser = OptionParser.new do |opts|
21
21
  opts.on("-d", "--rayo-domain DOMAIN", String, "Specify the domain Rayo is running on") do |d|
22
22
  options[:rayo_domain] = d
23
23
  end
24
- opts.on("--wire-log-file log/wirelog.log", String, "Specify the file to which the wire log should be written") do |wlf|
25
- options[:wire_log_file] = wlf
26
- end
27
- opts.on("--transport-log-file log/transportlog.log", String, "Specify the file to which the transport log should be written") do |tlf|
28
- options[:transport_log_file] = tlf
24
+ opts.on("--log-file log/punchblock.log", String, "Specify the file to which the log should be written") do |lf|
25
+ options[:log_file] = lf
29
26
  end
30
27
  opts.on("--asterisk", "Use Asterisk") do |tlf|
31
28
  options[:connection_class] = Connection::Asterisk
@@ -1,6 +1,7 @@
1
1
  require 'punchblock'
2
2
  require 'pry'
3
3
  require 'punchblock/console/commands'
4
+ require 'punchblock/console/logging'
4
5
 
5
6
  include Punchblock
6
7
 
@@ -12,7 +13,8 @@ module PunchblockConsole
12
13
 
13
14
  def initialize(options)
14
15
  @options = options
15
- setup_logging
16
+ PunchblockConsole::Logging.start @options.delete(:log_file)
17
+ logger.info "Starting up..."
16
18
  @prompt = options.delete(:prompt)
17
19
  @connection = options.delete(:connection_class).new options
18
20
  @client = Client.new :connection => connection
@@ -20,26 +22,12 @@ module PunchblockConsole
20
22
 
21
23
  [:INT, :TERM].each do |signal|
22
24
  trap signal do
23
- puts "Shutting down!"
25
+ logger.info "Shutting down!"
24
26
  client.stop
25
27
  end
26
28
  end
27
29
  end
28
30
 
29
- def setup_logging
30
- if options.has_key? :wire_log_file
31
- options[:wire_logger] = Logger.new options.delete(:wire_log_file)
32
- options[:wire_logger].level = Logger::DEBUG
33
- options[:wire_logger].debug "Starting up..."
34
- end
35
-
36
- if options.has_key? :transport_log_file
37
- options[:transport_logger] = Logger.new options.delete(:transport_log_file)
38
- options[:transport_logger].level = Logger::DEBUG
39
- options[:transport_logger].debug "Starting up..."
40
- end
41
- end
42
-
43
31
  def run
44
32
  run_dispatcher
45
33
  client_thread = run_client
@@ -52,8 +40,8 @@ module PunchblockConsole
52
40
  begin
53
41
  client.run
54
42
  rescue => e
55
- puts "Exception in Punchblock client thread! #{e.message}"
56
- puts e.backtrace.join("\t\n")
43
+ logger.error "Exception in Punchblock client thread! #{e.message}"
44
+ logger.error e.backtrace.join("\t\n")
57
45
  end
58
46
  end
59
47
  end
@@ -79,10 +67,10 @@ module PunchblockConsole
79
67
  if event.call_id
80
68
  call_queues[event.call_id].push event
81
69
  else
82
- puts "Ad-hoc event: #{event.inspect}"
70
+ # puts "Ad-hoc event: #{event.inspect}"
83
71
  end
84
72
  else
85
- puts "Unknown event: #{event.inspect}"
73
+ logger.warn "Unknown event: #{event.inspect}"
86
74
  end
87
75
  end
88
76
  end
@@ -96,7 +84,7 @@ module PunchblockConsole
96
84
  queue = call_queues[offer.call_id]
97
85
  call = queue.pop
98
86
 
99
- puts "Incoming offer to #{offer.to} from #{offer.headers_hash[:from]} #{offer}"
87
+ puts "Incoming offer to #{offer.to} from #{offer.from} #{offer}"
100
88
 
101
89
  PunchblockConsole::Commands.new(client, offer.call_id, queue).pry
102
90
 
@@ -28,12 +28,22 @@ module PunchblockConsole
28
28
  write Component::Record.new(options)
29
29
  end
30
30
 
31
- def say(string, type = :text) # :nodoc:
32
- component = Component::Tropo::Say.new(type => string)
31
+ def say(string)
32
+ output string, :text
33
+ end
34
+
35
+ def output(string, type = :text) # :nodoc:
36
+ component = Component::Output.new(type => string)
33
37
  write component
34
38
  component.complete_event.resource
35
39
  end
36
40
 
41
+ def agi(command, params = {})
42
+ component = Component::Asterisk::AGI::Command.new :name => command, :params => params
43
+ write component
44
+ puts component.complete_event.resource
45
+ end
46
+
37
47
  def write(command) # :nodoc:
38
48
  @client.execute_command command, :call_id => @call_id, :async => false
39
49
  end
@@ -0,0 +1,119 @@
1
+ require 'logging'
2
+
3
+ class Object
4
+ def pb_logger
5
+ logger
6
+ end
7
+
8
+ def logger
9
+ @logger ||= ::Logging.logger[self]
10
+ end
11
+ end
12
+
13
+ module PunchblockConsole
14
+ module Logging
15
+
16
+ LOG_LEVELS = %w(TRACE DEBUG INFO WARN ERROR FATAL)
17
+
18
+ class << self
19
+
20
+ ::Logging.color_scheme('bright',
21
+ :levels => {
22
+ :info => :green,
23
+ :warn => :yellow,
24
+ :error => :red,
25
+ :fatal => [:white, :on_red]
26
+ },
27
+ :date => :blue,
28
+ :logger => :cyan,
29
+ :message => :magenta
30
+ )
31
+
32
+ def silence!
33
+ self.logging_level = :fatal
34
+ end
35
+
36
+ def unsilence!
37
+ self.logging_level = :info
38
+ end
39
+
40
+ def reset
41
+ ::Logging.reset
42
+ end
43
+
44
+ def start(log_file = nil)
45
+ opts = {
46
+ :layout => ::Logging.layouts.pattern(
47
+ :pattern => '[%d] %-5l %c: %m\n',
48
+ :color_scheme => 'bright'
49
+ )
50
+ }
51
+ self.outputters = if log_file
52
+ ::Logging.appenders.file log_file, opts
53
+ else
54
+ ::Logging.appenders.stdout 'stdout', opts
55
+ end
56
+
57
+ ::Logging.init LOG_LEVELS
58
+
59
+ LOG_LEVELS.each do |level|
60
+ PunchblockConsole::Logging.const_defined?(level) or PunchblockConsole::Logging.const_set(level, ::Logging::LEVELS[::Logging.levelify(level)])
61
+ end
62
+ end
63
+
64
+ def logging_level=(new_logging_level)
65
+ ::Logging::Logger[:root].level = new_logging_level
66
+ end
67
+
68
+ alias :level= :logging_level=
69
+
70
+ def logging_level
71
+ ::Logging::Logger[:root].level
72
+ end
73
+
74
+ def get_logger(logger_name)
75
+ ::Logging::Logger[logger_name]
76
+ end
77
+
78
+ alias :level :logging_level
79
+
80
+ def sanitized_logger_name(name)
81
+ name.to_s.gsub(/\W/, '').downcase
82
+ end
83
+
84
+ def outputters=(outputters)
85
+ ::Logging.logger.root.appenders = Array(outputters)
86
+ end
87
+
88
+ alias :appenders= :outputters=
89
+
90
+ def outputters
91
+ ::Logging.logger.root.appenders
92
+ end
93
+
94
+ alias :appenders :outputters
95
+
96
+ def formatter=(formatter)
97
+ _set_formatter formatter
98
+ end
99
+
100
+ alias :layout= :formatter=
101
+
102
+ def formatter
103
+ ::Logging.logger.root.appenders.first.layout
104
+ end
105
+
106
+ alias :layout :formatter
107
+
108
+ private
109
+
110
+ def _set_formatter(formatter)
111
+ ::Logging.logger.root.appenders.each do |appender|
112
+ appender.layout = formatter
113
+ end
114
+ end
115
+
116
+ end
117
+
118
+ end
119
+ end
@@ -1,3 +1,3 @@
1
1
  module PunchblockConsole
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -20,7 +20,8 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.7") if s.respond_to? :required_rubygems_version=
22
22
 
23
- s.add_runtime_dependency %q<punchblock>, [">= 0.6.1"]
23
+ s.add_runtime_dependency %q<punchblock>, [">= 0.6.2"]
24
+ s.add_runtime_dependency %q<logging>, [">= 1.6.1"]
24
25
 
25
26
  s.add_development_dependency %q<bundler>, ["~> 1.0.0"]
26
27
  s.add_development_dependency %q<rspec>, ["~> 2.3.0"]
@@ -30,4 +31,5 @@ Gem::Specification.new do |s|
30
31
  s.add_development_dependency %q<rake>, [">= 0"]
31
32
  s.add_development_dependency %q<mocha>, [">= 0"]
32
33
  s.add_development_dependency %q<i18n>, [">= 0"]
34
+
33
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: punchblock-console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,22 +11,33 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-11-08 00:00:00.000000000 Z
14
+ date: 2011-11-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: punchblock
18
- requirement: &2160423120 !ruby/object:Gem::Requirement
18
+ requirement: &2152231320 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
22
22
  - !ruby/object:Gem::Version
23
- version: 0.6.1
23
+ version: 0.6.2
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2160423120
26
+ version_requirements: *2152231320
27
+ - !ruby/object:Gem::Dependency
28
+ name: logging
29
+ requirement: &2152227800 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 1.6.1
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *2152227800
27
38
  - !ruby/object:Gem::Dependency
28
39
  name: bundler
29
- requirement: &2160422520 !ruby/object:Gem::Requirement
40
+ requirement: &2152226580 !ruby/object:Gem::Requirement
30
41
  none: false
31
42
  requirements:
32
43
  - - ~>
@@ -34,10 +45,10 @@ dependencies:
34
45
  version: 1.0.0
35
46
  type: :development
36
47
  prerelease: false
37
- version_requirements: *2160422520
48
+ version_requirements: *2152226580
38
49
  - !ruby/object:Gem::Dependency
39
50
  name: rspec
40
- requirement: &2160421800 !ruby/object:Gem::Requirement
51
+ requirement: &2152069700 !ruby/object:Gem::Requirement
41
52
  none: false
42
53
  requirements:
43
54
  - - ~>
@@ -45,10 +56,10 @@ dependencies:
45
56
  version: 2.3.0
46
57
  type: :development
47
58
  prerelease: false
48
- version_requirements: *2160421800
59
+ version_requirements: *2152069700
49
60
  - !ruby/object:Gem::Dependency
50
61
  name: ci_reporter
51
- requirement: &2160118940 !ruby/object:Gem::Requirement
62
+ requirement: &2152066520 !ruby/object:Gem::Requirement
52
63
  none: false
53
64
  requirements:
54
65
  - - ! '>='
@@ -56,10 +67,10 @@ dependencies:
56
67
  version: 1.6.3
57
68
  type: :development
58
69
  prerelease: false
59
- version_requirements: *2160118940
70
+ version_requirements: *2152066520
60
71
  - !ruby/object:Gem::Dependency
61
72
  name: yard
62
- requirement: &2160118260 !ruby/object:Gem::Requirement
73
+ requirement: &2152064400 !ruby/object:Gem::Requirement
63
74
  none: false
64
75
  requirements:
65
76
  - - ~>
@@ -67,10 +78,10 @@ dependencies:
67
78
  version: 0.6.0
68
79
  type: :development
69
80
  prerelease: false
70
- version_requirements: *2160118260
81
+ version_requirements: *2152064400
71
82
  - !ruby/object:Gem::Dependency
72
83
  name: rcov
73
- requirement: &2160117760 !ruby/object:Gem::Requirement
84
+ requirement: &2152050240 !ruby/object:Gem::Requirement
74
85
  none: false
75
86
  requirements:
76
87
  - - ! '>='
@@ -78,10 +89,10 @@ dependencies:
78
89
  version: '0'
79
90
  type: :development
80
91
  prerelease: false
81
- version_requirements: *2160117760
92
+ version_requirements: *2152050240
82
93
  - !ruby/object:Gem::Dependency
83
94
  name: rake
84
- requirement: &2160117060 !ruby/object:Gem::Requirement
95
+ requirement: &2152041480 !ruby/object:Gem::Requirement
85
96
  none: false
86
97
  requirements:
87
98
  - - ! '>='
@@ -89,10 +100,10 @@ dependencies:
89
100
  version: '0'
90
101
  type: :development
91
102
  prerelease: false
92
- version_requirements: *2160117060
103
+ version_requirements: *2152041480
93
104
  - !ruby/object:Gem::Dependency
94
105
  name: mocha
95
- requirement: &2160116380 !ruby/object:Gem::Requirement
106
+ requirement: &2152039040 !ruby/object:Gem::Requirement
96
107
  none: false
97
108
  requirements:
98
109
  - - ! '>='
@@ -100,10 +111,10 @@ dependencies:
100
111
  version: '0'
101
112
  type: :development
102
113
  prerelease: false
103
- version_requirements: *2160116380
114
+ version_requirements: *2152039040
104
115
  - !ruby/object:Gem::Dependency
105
116
  name: i18n
106
- requirement: &2160115600 !ruby/object:Gem::Requirement
117
+ requirement: &2152037560 !ruby/object:Gem::Requirement
107
118
  none: false
108
119
  requirements:
109
120
  - - ! '>='
@@ -111,7 +122,7 @@ dependencies:
111
122
  version: '0'
112
123
  type: :development
113
124
  prerelease: false
114
- version_requirements: *2160115600
125
+ version_requirements: *2152037560
115
126
  description: This gem provides a simple interactive console for troubleshooting and
116
127
  debugging the Rayo protocol via Punchblock.
117
128
  email: punchblock@adhearsion.com
@@ -128,6 +139,7 @@ files:
128
139
  - bin/pbconsole
129
140
  - lib/punchblock/console/cli.rb
130
141
  - lib/punchblock/console/commands.rb
142
+ - lib/punchblock/console/logging.rb
131
143
  - lib/punchblock/console/version.rb
132
144
  - punchblock-console.gemspec
133
145
  homepage: https://github.com/adhearsion/punchblock