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

message(key)

       # File lib/harbor/request.rb, line 120
120:     def message(key)
121:       messages[key]
122:     end

messages()

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

params()

      # File lib/harbor/request.rb, line 90
90:     def params
91:       params = begin
92:         self.GET && self.GET.update(self.POST || {})
93:       rescue EOFError => e
94:         self.GET
95:       end
96: 
97:       params || {}
98:     end

path()

Returns

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

protocol()

       # File lib/harbor/request.rb, line 100
100:     def protocol
101:       ssl? ? 'https://' : 'http://'
102:     end

referer()

       # File lib/harbor/request.rb, line 108
108:     def referer
109:       @env['HTTP_REFERER']
110:     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

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 104
104:     def ssl?
105:       @env['HTTPS'] == 'on' || @env['HTTP_X_FORWARDED_PROTO'] == 'https'
106:     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 112
112:     def uri
113:       @env['REQUEST_URI'] || @env['REQUEST_PATH'] || @env['PATH_INFO']
114:     end

Private Instance Methods

request_method_in_params?()

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