class Mastodon::Streaming::Connection
Attributes
ssl_socket_class[R]
tcp_socket_class[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/mastodon/streaming/connection.rb, line 10 def initialize(options = {}) @tcp_socket_class = options.fetch(:tcp_socket_class) { TCPSocket } @ssl_socket_class = options.fetch(:ssl_socket_class) { OpenSSL::SSL::SSLSocket } @using_ssl = options.fetch(:using_ssl) { false } end
Public Instance Methods
connect(request)
click to toggle source
# File lib/mastodon/streaming/connection.rb, line 26 def connect(request) client = new_tcp_socket(request.socket_host, request.socket_port) return client if !@using_ssl || (!@using_ssl && request.using_proxy?) client_context = OpenSSL::SSL::SSLContext.new ssl_client = @ssl_socket_class.new(client, client_context) ssl_client.connect end
stream(request, response)
click to toggle source
# File lib/mastodon/streaming/connection.rb, line 16 def stream(request, response) client = connect(request) request.stream(client) while body = client.readpartial(1024) # rubocop:disable AssignmentInCondition response << body end end
Private Instance Methods
new_tcp_socket(host, port)
click to toggle source
# File lib/mastodon/streaming/connection.rb, line 39 def new_tcp_socket(host, port) @tcp_socket_class.new(Resolv.getaddress(host), port) end