class Gack::Request
Parse a Gemini request into a friendly object
Constants
- PROTOCOL
Attributes
request[R]
Public Class Methods
new(request)
click to toggle source
# File lib/gack/request.rb, line 10 def initialize(request) @request = request end
Public Instance Methods
input()
click to toggle source
# File lib/gack/request.rb, line 18 def input @input ||= parse_input end
location()
click to toggle source
# File lib/gack/request.rb, line 14 def location @location ||= parse_location end
Private Instance Methods
clean_request()
click to toggle source
`.chomp` to drop the trailing rn and `.gsub` to remove the protocol
# File lib/gack/request.rb, line 50 def clean_request @clean_request ||= request.chomp.gsub(PROTOCOL, '') end
parse_input()
click to toggle source
# File lib/gack/request.rb, line 39 def parse_input split_input = clean_request.split('?') if split_input.size > 2 CGI.unescape(split_input[1..].join('?')) else CGI.unescape(split_input.last) end end
parse_location()
click to toggle source
# File lib/gack/request.rb, line 24 def parse_location # ignore input location_only = clean_request.split('?').first return unless location_only split_request = location_only.split('/') return '/' if split_request.size == 1 return "/#{split_request.last}" if split_request.size == 2 "/#{split_request[1..].join('/')}" end