Sha256: 2f2b145cc0db70eaac7739f8944e6e71b668f99ae6dc7a9981fab4b560eceec9

Contents?: true

Size: 1.37 KB

Versions: 9

Compression:

Stored size: 1.37 KB

Contents

require 'opbeat/interfaces'

module Opbeat

  class HttpInterface < Interface

    name 'http'
    attr_accessor :url
    attr_accessor :method
    attr_accessor :data
    attr_accessor :query_string
    attr_accessor :cookies
    attr_accessor :headers
    attr_accessor :remote_host
    attr_accessor :http_host
    attr_accessor :env

    def initialize(*arguments)
      self.headers = {}
      self.env = {}
      super(*arguments)
    end

    def from_rack(env)
      require 'rack'
      req = ::Rack::Request.new(env)
      self.url = req.url.split('?').first
      self.method = req.request_method
      self.query_string = req.query_string
      self.cookies = req.cookies.collect {|k,v| "#{k}=#{v}"}.join(';')
      self.remote_host = req.ip
      self.http_host = req.host_with_port
      env.each_pair do |key, value|
        next unless key.upcase == key # Non-upper case stuff isn't either
        if key.start_with?('HTTP_')
          # Header
          http_key = key[5..key.length-1].split('_').map{|s| s.capitalize}.join('-')
          self.headers[http_key] = value.to_s
        else
          # Environment
          self.env[key] = value.to_s
        end
      end
      self.data = if req.form_data?
        req.POST
      elsif req.body
        data = req.body.read
        req.body.rewind
        data
      end
    end

  end

  register_interface :http => HttpInterface

end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
kuende-opbeat-2.0.4 lib/opbeat/interfaces/http.rb
kuende-opbeat-2.0.3 lib/opbeat/interfaces/http.rb
kuende-opbeat-2.0.2 lib/opbeat/interfaces/http.rb
kuende-opbeat-2.0.1 lib/opbeat/interfaces/http.rb
opbeat-2.0.0 lib/opbeat/interfaces/http.rb
opbeat-1.1.1 lib/opbeat/interfaces/http.rb
opbeat-1.1.0 lib/opbeat/interfaces/http.rb
opbeat-1.0.0 lib/opbeat/interfaces/http.rb
opbeat-0.9.2 lib/opbeat/interfaces/http.rb