HTTP DigestAuth в Ruby
Я пытаюсь настроить DigestAuth в своем приложении на Ruby и не могу найти четкую документацию о том, как это сделать. Ниже приведен код, где я пытаюсь его реализовать:
class CNT < self
def handle(name, *args)
post_body = {"jsonrpc" => "2.0", 'method' => name, 'params' => args, 'id' => '0' }.to_json
Rails.logger.info "CNT -> " + post_body
resp = JSON.parse( http_post_request(post_body) )
Rails.logger.info "CNT <- " + resp.to_json
raise JSONRPCError, resp['error'] if resp['error']
result = resp['result']
#result.symbolize_keys! if result.is_a? Hash
result
end
def handle_one(name, arg)
post_body = {"jsonrpc" => "2.0", 'method' => name, 'params' => arg, 'id' => '0' }.to_json
Rails.logger.info "CNT -> " + post_body
resp = JSON.parse( http_post_request(post_body) )
Rails.logger.info "CNT <- " + resp.to_json
raise JSONRPCError, resp['error'] if resp['error']
result = resp['result']
#result.symbolize_keys! if result.is_a? Hash
result
end
def http_post_request(post_body)
http = Net::HTTP.new(@uri.host, @uri.port)
request = Net::HTTP::Post.new(@uri.request_uri)
request.basic_auth @uri.user, @uri.password
request.content_type = 'application/json'
request.body = post_body
@reply = http.request(request).body
return @reply
rescue Errno::ECONNREFUSED => e
raise ConnectionRefusedError
end
С помощью этого кода я могу успешно получить ответ, используя приведенный выше код, но ответом является "401 Несанкционированная ошибка". Я могу получить ожидаемый ответ, используя curl с --digest, но не могу найти хорошую документацию о том, как добавить digest_auth в мой код Ruby. Я сделал "gem install net-http-digest_auth" и добавил 'require 'net/http/digest_auth'". До сих пор мне не удавалось реализовать его.
Любая помощь будет принята с благодарностью