Module: GRApiManager
- Defined in:
- lib/gr_api_manager.rb
Defined Under Namespace
Modules: BodyParser, JWT, Validator Classes: FilePayload, RateLimiter, RouteGroup, Server
Class Method Summary collapse
-
.extract_client_ip(request) ⇒ Object
Extracts the client IP from proxy headers (Cloudflare, X-Real-IP, X-Forwarded-For), falling back to request.ip or REMOTE_ADDR.
- .gb(n) ⇒ Object
-
.mb(n) ⇒ Object
Convenience size helpers — use in max_body_size: GRApiManager.mb(50) => 50 MB in bytes GRApiManager.gb(2) => 2 GB in bytes.
Class Method Details
.extract_client_ip(request) ⇒ Object
Extracts the client IP from proxy headers (Cloudflare, X-Real-IP, X-Forwarded-For), falling back to request.ip or REMOTE_ADDR.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/gr_api_manager.rb', line 18 def self.extract_client_ip(request) env = request.respond_to?(:env) ? request.env : request return (request.respond_to?(:ip) ? request.ip : '127.0.0.1') unless env.is_a?(Hash) if env['HTTP_CF_CONNECTING_IP'] && !env['HTTP_CF_CONNECTING_IP'].to_s.strip.empty? return env['HTTP_CF_CONNECTING_IP'].to_s.strip end if env['HTTP_X_REAL_IP'] && !env['HTTP_X_REAL_IP'].to_s.strip.empty? return env['HTTP_X_REAL_IP'].to_s.strip end if env['HTTP_X_FORWARDED_FOR'] && !env['HTTP_X_FORWARDED_FOR'].to_s.strip.empty? client = env['HTTP_X_FORWARDED_FOR'].to_s.split(',').first return client.strip if client && !client.strip.empty? end request.respond_to?(:ip) ? request.ip : (env['REMOTE_ADDR'] || '127.0.0.1') end |
.gb(n) ⇒ Object
14 |
# File 'lib/gr_api_manager.rb', line 14 def self.gb(n) = n * 1_024 * 1_024 * 1_024 |
.mb(n) ⇒ Object
Convenience size helpers — use in max_body_size:
GRApiManager.mb(50) => 50 MB in bytes
GRApiManager.gb(2) => 2 GB in bytes
13 |
# File 'lib/gr_api_manager.rb', line 13 def self.mb(n) = n * 1_024 * 1_024 |