summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2016-12-02 11:36:02 +0100
committerAzul <azul@riseup.net>2016-12-02 11:36:02 +0100
commit65600992f5317ec8889428001313e36629b1e877 (patch)
tree300a84ac80dcc5f7151b000ceaaa18235d5591e5
parent396b34a52aa7594866fda090f1329827488e98bc (diff)
bugfix: use user:password@ prefix in http basic auth
http.rb does not do this on its own.
-rw-r--r--lib/nickserver/adapters/celluloid_http.rb21
-rw-r--r--lib/nickserver/adapters/http.rb24
2 files changed, 27 insertions, 18 deletions
diff --git a/lib/nickserver/adapters/celluloid_http.rb b/lib/nickserver/adapters/celluloid_http.rb
index 92c5c53..62f905f 100644
--- a/lib/nickserver/adapters/celluloid_http.rb
+++ b/lib/nickserver/adapters/celluloid_http.rb
@@ -1,28 +1,19 @@
-require 'nickserver/adapters'
-require 'nickserver/config'
+require 'nickserver/adapters/http'
silence_warnings do
require 'celluloid/io'
end
-require 'http'
module Nickserver::Adapters
- class CelluloidHttp
+ class CelluloidHttp < Http
silence_warnings do
include Celluloid::IO
end
- def get(url, options = {})
- response = HTTP.get url,
- params: options[:query],
- ssl_context: ctx,
- ssl_socket_class: Celluloid::IO::SSLSocket
- return response.code, response.to_s
- end
+ protected
- def ctx
- OpenSSL::SSL::SSLContext.new.tap do |ctx|
- ctx.ca_file = Nickserver::Config.hkp_ca_file
- end
+ def default_options
+ super.merge ssl_socket_class: Celluloid::IO::SSLSocket
end
+
end
end
diff --git a/lib/nickserver/adapters/http.rb b/lib/nickserver/adapters/http.rb
index b0ba728..636aceb 100644
--- a/lib/nickserver/adapters/http.rb
+++ b/lib/nickserver/adapters/http.rb
@@ -6,12 +6,30 @@ module Nickserver::Adapters
class Http
def get(url, options = {})
- response = HTTP.get url,
- params: options[:query],
- ssl_context: ctx
+ url = HTTP::URI.parse url.to_s
+ response = get_with_auth url, params: options[:query]
return response.code, response.to_s
end
+ protected
+
+ def get_with_auth(url, options)
+ options = default_options.merge options
+ http_with_basic_auth(url).get url, options
+ end
+
+ def http_with_basic_auth(url)
+ if url.password && (url.password != '')
+ HTTP.basic_auth(user: url.user, pass: url.password)
+ else
+ HTTP
+ end
+ end
+
+ def default_options
+ { ssl_context: ctx }
+ end
+
def ctx
OpenSSL::SSL::SSLContext.new.tap do |ctx|
ctx.ca_file = Nickserver::Config.hkp_ca_file