Module: FirePHRuby::Common
- Included in:
- CGI, HTTPResponse
- Defined in:
- lib/firephruby.rb
Constant Summary collapse
- FPHR_INIT_HEADERS =
{ 'X-Wf-Protocol-1' => 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2', # 'X-FirePHP-RendererURL' => 'http://banza.net/firephruby/Renderer.js', # 'X-FirePHP-ProcessorURL' => 'http://banza.net/firephruby/RequestProcessor.js', 'X-Wf-1-Plugin-1' =>'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.2.0'}
- FPHR_INIT_HEADERS_LOG =
‘X-FirePHP-RendererURL’ => ‘banza.net/firephruby/Renderer.js’, ‘X-FirePHP-ProcessorURL’ => ‘banza.net/firephruby/RequestProcessor.js’,
{ 'X-Wf-1-Structure-1' => 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1' }
- FPHR_INIT_HEADERS_DUMP =
{ 'X-Wf-1-Structure-2' => 'http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1' }
- FPHR_KINDS =
%w(LOG INFO WARN ERROR DUMP TRACE EXCEPTION TABLE)
- FPHR_LEGACY_WARNING =
{ 'X-FirePHP-Data-100000000001' => '{' , 'X-FirePHP-Data-300000000001' => '"FirePHP.Firebug.Console":[', 'X-FirePHP-Data-300000000002' => '[ "INFO", "This version of FirePHP is no longer supported by FirePHRuby. Please update to 0.2.1 or higher." ],', 'X-FirePHP-Data-399999999999' => '["__SKIP__"]],', 'X-FirePHP-Data-999999999999' => '"__SKIP__":"__SKIP__"}' }
- MAX_LENGTH =
4000
Instance Method Summary collapse
- #_firephruby_build_headers(msg, kind = 'LOG', label = nil) ⇒ Object
- #_firephruby_initialize_request(ua) ⇒ Object
-
#_firephruby_mask_ruby_types(data, skip = true) ⇒ Object
skip masking if not hash key.
- #_firephruby_set_options(opts) ⇒ Object
- #firephruby_internal_log(msg) ⇒ Object
Instance Method Details
#_firephruby_build_headers(msg, kind = 'LOG', label = nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/firephruby.rb', line 26 def _firephruby_build_headers msg,kind='LOG',label=nil headers = [] t_pref,g_kind = kind == 'DUMP' ? [ 2, 'DUMP' ] : [ 1, 'LOG' ] file, line, function = caller[2].split ':' = { 'Type' => kind, 'File' => file, 'Line' => line } ['Label'] = label if label @fire_msg_index = 0 unless instance_variables.member? '@fire_msg_index' msg = _firephruby_mask_ruby_types( Marshal.load(Marshal.dump(msg)) ) if ( @firephruby_options.has_key? :mask_ruby_types && :mask_ruby_types ) msg = kind == 'DUMP' ? "{#{label.to_json}:#{msg.to_json}}" : "[#{.to_json},#{msg.to_json}]" #puts msg.to_json (msg.gsub /.{#{MAX_LENGTH}}/ do |m| "#{m}\n" end).split( "\n" ).each_with_index do |msg_part,ind| @fire_msg_index += 1 headers << [ "X-Wf-1-#{t_pref}-1-#{@fire_msg_index}", "#{msg.size if ind == 0}|#{msg_part}|#{'\\' if ind < msg.size/MAX_LENGTH}" ] # int/int = int #puts " msg_part: #{msg.size if ind == 0}|#{msg_part}|" end unless instance_variables.member? "@firephruby_inited_#{g_kind.downcase}" FirePHRuby::Common::const_get( "FPHR_INIT_HEADERS_#{g_kind}" ).each_pair { |k,v| headers << [ k, v ] } instance_variable_set( "@firephruby_inited_#{g_kind.downcase}", true ) end return headers end |
#_firephruby_initialize_request(ua) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/firephruby.rb', line 51 def _firephruby_initialize_request ua @firephp_version = ua.match( /FirePHP\/(\d+)\.(\d+)\.([\db.]+)/) @firephp_version = @firephp_version[1,3].map {|i| i.to_i} if @firephp_version firephp_01_version = ( @firephp_version || [0,2] )[0,2].join('.').to_f<0.2 @firephpruby_skip = @firephp_version == nil || firephp_01_version headers = firephp_01_version ? FPHR_LEGACY_WARNING : FPHR_INIT_HEADERS headers['X-FirePHP-RendererURL'] = @firephruby_options[:renderer_url] if @firephruby_options.has_key? :renderer_url headers['X-FirePHP-ProcessorURL'] = @firephruby_options[:processor_url] if @firephruby_options.has_key? :processor_url return headers end |
#_firephruby_mask_ruby_types(data, skip = true) ⇒ Object
skip masking if not hash key
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/firephruby.rb', line 67 def _firephruby_mask_ruby_types data, skip=true # skip masking if not hash key #firephruby_internal_log data.class.to_s if data.is_a? String return data elsif data.is_a? Integer return "__INT__#{data.to_s}__INT__" elsif data.is_a? Numeric return skip ? data : "__NUM__#{data.to_s}__NUM__" elsif data.is_a? TrueClass or data.is_a? FalseClass return skip ? data : "__BOOL__#{data.to_s}__BOOL__" elsif data.nil? return skip ? data : '__NIL__nil__NIL__' elsif data.is_a? Symbol return "__SYM__:#{data.to_s}__SYM__" elsif data.is_a? Array #firephruby_internal_log 'wird' return data.map { |v| _firephruby_mask_ruby_types v } elsif data.is_a? Hash k_types = [ Symbol, Fixnum, Bignum, Float, Range, TrueClass, FalseClass, NilClass ] j_types = [ Array, Hash ] data.each { |k,v| data[k] = _firephruby_mask_ruby_types v } keys_to_mask = data.keys.select { |k| k_types.include? k.class } keys_to_mask.each { |k| nk = _firephruby_mask_ruby_types k,false; data[nk] = data[k]; data.delete k } keys_to_jsonize = data.keys.select { |k| j_types.include? k.class } keys_to_jsonize.each do |k| nk = _firephruby_mask_ruby_types( k,false ).to_json data["__JSON__#{nk}__JSON__"] = data[k] data.delete k end return data elsif data.is_a? Range return "__RNG__#{data.to_s}__RNG__" end firephruby_internal_log 'shit happens - class: ' + data.class.to_s return data end |
#_firephruby_set_options(opts) ⇒ Object
47 48 49 50 |
# File 'lib/firephruby.rb', line 47 def opts @firephruby_options = {} unless instance_variables.member? '@firephruby_options' @firephruby_options.merge! opts end |
#firephruby_internal_log(msg) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/firephruby.rb', line 61 def firephruby_internal_log msg @fire_msg_index = 0 unless instance_variables.member? '@fire_msg_index' @fire_msg_index += 1 msg = "[#{{:Type=>'LOG',:Label=>'____________________________ internal message'}.to_json},#{msg.to_json}]" puts "X-Wf-1-1-1-#{@fire_msg_index}: #{msg.size}|#{msg}|" end |