Harbor Documentation

Constants

  • BOT_AGENTS

Attributes

  • layout [RW] (Not documented)
  • application [RW] (Not documented)

Public Class Methods

new(application, env)

      # File lib/harbor/request.rb, line 45
45:     def initialize(application, env)
46:       raise ArgumentError.new("+env+ must be a Rack Environment Hash") unless env.is_a?(Hash)
47:       @application = application
48:       super(env)
49:     end

Public Instance Methods

bot?()

      # File lib/harbor/request.rb, line 59
59:     def bot?
60:       user_agent = env["HTTP_USER_AGENT"]
61:       BOT_AGENTS.any? { |bot_agent| user_agent =~ bot_agent }
62:     end

environment()

      # File lib/harbor/request.rb, line 86
86:     def environment
87:       @env['APP_ENVIRONMENT'] || (@application ? @application.environment : "development")
88:     end

fetch(key, default_value = nil)

      # File lib/harbor/request.rb, line 51
51:     def fetch(key, default_value = nil)
52:       if (value = self[key]).nil? || value == ''
53:         default_value
54:       else
55:         value
56:       end
57:     end

health_check?()

      # File lib/harbor/request.rb, line 90
90:     def health_check?
91:       !params["health_check"].nil?
92:     end

message(key)

       # File lib/harbor/request.rb, line 137
137:     def message(key)
138:       messages[key]
139:     end

messages()

       # File lib/harbor/request.rb, line 133
133:     def messages
134:       @messages ||= session[:messages] = Messages.new(session[:messages])
135:     end

params()

       # File lib/harbor/request.rb, line 94
 94:     def params
 95:       params = begin
 96:         if @env["rack.input"].nil?
 97:           self.GET
 98:         else
 99:           self.GET && self.GET.update(self.POST || {})
100:         end
101:       rescue EOFError => e
102:         self.GET
103:       end
104: 
105:       params || {}
106:     end

path()

Returns

String:The URI without the query string. Strips trailing “/” and reduces duplicate “/” to a single “/”.
       # File lib/harbor/request.rb, line 145
145:     def path
146:       path = (uri.empty? ? '/' : uri.split('?').first).squeeze("/")
147:       path = path[0..-2] if (path[-1] == ?/) && path.size > 1
148:       path
149:     end

protocol()

       # File lib/harbor/request.rb, line 117
117:     def protocol
118:       ssl? ? 'https://' : 'http://'
119:     end

referer()

       # File lib/harbor/request.rb, line 125
125:     def referer
126:       @env['HTTP_REFERER']
127:     end

remote_ip()

      # File lib/harbor/request.rb, line 76
76:     def remote_ip
77:       # handling proxied environments
78:       env["HTTP_X_FORWARDED_FOR"] || env["HTTP_CLIENT_IP"] || env["REMOTE_ADDR"]
79:     end

request_method()

      # File lib/harbor/request.rb, line 81
81:     def request_method
82:       @env['REQUEST_METHOD'] = self.POST['_method'].upcase if request_method_in_params?
83:       @env['REQUEST_METHOD']
84:     end

route_captures()

holdover method until Harbor::Router moves to oniguruma and can use named captures

       # File lib/harbor/request.rb, line 109
109:     def route_captures
110:       @route_captures || []
111:     end

route_captures=(value)

       # File lib/harbor/request.rb, line 113
113:     def route_captures=(value)
114:       @route_captures = value
115:     end

session(key = nil)

      # File lib/harbor/request.rb, line 68
68:     def session(key = nil)
69:       @session ||= Harbor::Session.new(self, key)
70:     end

session?()

      # File lib/harbor/request.rb, line 72
72:     def session?
73:       @session
74:     end

ssl?()

       # File lib/harbor/request.rb, line 121
121:     def ssl?
122:       @env['HTTPS'] == 'on' || @env['HTTP_X_FORWARDED_PROTO'] == 'https'
123:     end

unload_session()

      # File lib/harbor/request.rb, line 64
64:     def unload_session
65:       @session = nil
66:     end

uri()

       # File lib/harbor/request.rb, line 129
129:     def uri
130:       @env['REQUEST_URI'] || @env['REQUEST_PATH'] || @env['PATH_INFO']
131:     end

Private Instance Methods

request_method_in_params?()

       # File lib/harbor/request.rb, line 152
152:     def request_method_in_params?
153:       @env["REQUEST_METHOD"] == "POST" && self.POST && %w(PUT DELETE).include?((self.POST['_method'] || "").upcase)
154:     end