From 6bdcd9e96c62848cf5c30dc2aace2c2e06894d00 Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Mon, 26 Jul 2021 23:16:09 +0200 Subject: [PATCH] Move Crystal stdlib classes overrides to a separate file --- .../helpers/crystal_class_overrides.cr | 49 ++++++++++++++++++ src/invidious/helpers/helpers.cr | 50 ------------------- 2 files changed, 49 insertions(+), 50 deletions(-) create mode 100644 src/invidious/helpers/crystal_class_overrides.cr diff --git a/src/invidious/helpers/crystal_class_overrides.cr b/src/invidious/helpers/crystal_class_overrides.cr new file mode 100644 index 00000000..d5952537 --- /dev/null +++ b/src/invidious/helpers/crystal_class_overrides.cr @@ -0,0 +1,49 @@ +class TCPSocket + def initialize(host, port, dns_timeout = nil, connect_timeout = nil, family = Socket::Family::UNSPEC) + Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo| + super(addrinfo.family, addrinfo.type, addrinfo.protocol) + connect(addrinfo, timeout: connect_timeout) do |error| + close + error + end + end + end +end + +class HTTP::Client + property family : Socket::Family = Socket::Family::UNSPEC + + private def socket + socket = @socket + return socket if socket + + hostname = @host.starts_with?('[') && @host.ends_with?(']') ? @host[1..-2] : @host + socket = TCPSocket.new hostname, @port, @dns_timeout, @connect_timeout, @family + socket.read_timeout = @read_timeout if @read_timeout + socket.sync = false + + {% if !flag?(:without_openssl) %} + if tls = @tls + socket = OpenSSL::SSL::Socket::Client.new(socket, context: tls, sync_close: true, hostname: @host) + end + {% end %} + + @socket = socket + end +end + +class HTTP::Server::Response + class Output + private def unbuffered_flush + @io.flush + rescue ex : IO::Error + unbuffered_close + end + end +end + +class PG::ResultSet + def field(index = @column_index) + @fields.not_nil![index] + end +end diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr index fb7b19e6..99d7f440 100644 --- a/src/invidious/helpers/helpers.cr +++ b/src/invidious/helpers/helpers.cr @@ -509,12 +509,6 @@ def check_table(db, table_name, struct_type = nil) end end -class PG::ResultSet - def field(index = @column_index) - @fields.not_nil![index] - end -end - def get_column_array(db, table_name) column_array = [] of String db.query("SELECT * FROM #{table_name} LIMIT 0") do |rs| @@ -699,47 +693,3 @@ def proxy_file(response, env) IO.copy response.body_io, env.response end end - -class HTTP::Server::Response - class Output - private def unbuffered_flush - @io.flush - rescue ex : IO::Error - unbuffered_close - end - end -end - -class HTTP::Client - property family : Socket::Family = Socket::Family::UNSPEC - - private def socket - socket = @socket - return socket if socket - - hostname = @host.starts_with?('[') && @host.ends_with?(']') ? @host[1..-2] : @host - socket = TCPSocket.new hostname, @port, @dns_timeout, @connect_timeout, @family - socket.read_timeout = @read_timeout if @read_timeout - socket.sync = false - - {% if !flag?(:without_openssl) %} - if tls = @tls - socket = OpenSSL::SSL::Socket::Client.new(socket, context: tls, sync_close: true, hostname: @host) - end - {% end %} - - @socket = socket - end -end - -class TCPSocket - def initialize(host, port, dns_timeout = nil, connect_timeout = nil, family = Socket::Family::UNSPEC) - Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo| - super(addrinfo.family, addrinfo.type, addrinfo.protocol) - connect(addrinfo, timeout: connect_timeout) do |error| - close - error - end - end - end -end