Sha256: fb700212d413db4949b5b3c588728c9a782f8b42c30b0475a020b4ffa45eba0a

Contents?: true

Size: 1.32 KB

Versions: 10

Compression:

Stored size: 1.32 KB

Contents

#require 'rack/utils'

module Cloudfuji
  class Middleware
    include Rack::Utils

    def initialize(app, opts = {})
      @app = app
    end

    def call(env)
      if Cloudfuji::Platform.on_cloudfuji? and Cloudfuji::Bar.in_bar_display_path?(env)
        status, headers, response = @app.call(env)

        content = ""
        response.each { |part| content += part }

        # "claiming" bar + stats ?
        content.gsub!(/<\/body>/i, <<-STR
            <script type="text/javascript">
              var _cloudfuji_app = '#{Cloudfuji::Platform.name}';
              var _cloudfuji_claimed = #{Cloudfuji::Platform.claimed?.to_s};
              var _cloudfuji_metrics_token = '#{Cloudfuji::Platform.metrics_token}';
              (function() {
                var cloudfuji = document.createElement('script'); cloudfuji.type = 'text/javascript'; cloudfuji.async = true;
                cloudfuji.src = '#{Cloudfuji::Platform.cloudfuji_js_source}?t=#{::Cloudfuji::VERSION.gsub('.', '')}';
                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(cloudfuji, s);
              })();
            </script>     
          </body>
        STR
        )

        headers['content-length'] = bytesize(content).to_s
        [status, headers, [content]]
      else
        @app.call(env)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
cloudfuji-0.0.46 lib/cloudfuji/middleware.rb
cloudfuji-0.0.45 lib/cloudfuji/middleware.rb
cloudfuji-0.0.44 lib/cloudfuji/middleware.rb
cloudfuji-0.0.43 lib/cloudfuji/middleware.rb
cloudfuji-0.0.42 lib/cloudfuji/middleware.rb
cloudfuji-0.0.41 lib/cloudfuji/middleware.rb
cloudfuji-0.0.40 lib/cloudfuji/middleware.rb
cloudfuji-0.0.39 lib/cloudfuji/middleware.rb
cloudfuji-0.0.38 lib/cloudfuji/middleware.rb
cloudfuji-0.0.37 lib/cloudfuji/middleware.rb