class Net::GeminiRequest
The syntax of Gemini
Requests are defined in the Gemini
specification, section 2.
Attributes
uri[R]
Public Class Methods
new(uri_or_str)
click to toggle source
# File lib/net/gemini/request.rb, line 19 def initialize(uri_or_str) # In any case, make some sanity check over this uri-like think url = uri_or_str.to_s if url.length > 1024 raise GeminiBadRequest, "Request too long: #{url.dump}" end @uri = URI(url) return if uri.is_a? URI::Gemini raise GeminiBadRequest, "Not a Gemini URI: #{url.dump}" end
read_new(sock)
click to toggle source
# File lib/net/gemini/request.rb, line 39 def read_new(sock) # Read up to 1026 bytes: # - 1024 bytes max for the URL # - 2 bytes for <CR><LF> str = sock.gets($INPUT_RECORD_SEPARATOR, 1026) m = /\A(.*)\r\n\z/.match(str) raise GeminiBadRequest, "Malformed request: #{str&.dump}" if m.nil? new(m[1]) end
Public Instance Methods
path()
click to toggle source
# File lib/net/gemini/request.rb, line 30 def path @uri.path end
write(sock)
click to toggle source
# File lib/net/gemini/request.rb, line 34 def write(sock) sock.puts "#{@uri}\r\n" end