module MstdnIvory::Stream

Public Instance Methods

connect(request) click to toggle source
# File lib/mstdn_ivory/stream.rb, line 27
def connect(request)
  client = TCPSocket.open(request.socket_host, request.socket_port)

  ssl_client = OpenSSL::SSL::SSLSocket.new(client)
  ssl_client.connect

  request.stream(ssl_client)

  ssl_client
end
stream(path, options = {}, &block) click to toggle source
# File lib/mstdn_ivory/stream.rb, line 9
def stream(path, options = {}, &block)
  stream_request(:get, path, options, &block)
end
stream_request(method, path, params, &block) click to toggle source
# File lib/mstdn_ivory/stream.rb, line 13
def stream_request(method, path, params, &block)
  uri = Addressable::URI.parse(self.base_url + path)

  request = HTTP::Request.new(verb: method, uri: uri + '?' + to_url_params(params), headers: self.headers)

  client = connect(request)

  parser = MstdnIvory::Parser.new(&block)

  while (body = client.readpartial(4096))
    parser << body
  end
end
to_url_params(params) click to toggle source
# File lib/mstdn_ivory/stream.rb, line 38
def to_url_params(params)
  work = Addressable::URI.new
  work.query_values = params
  work.query
end