在 Ruby 中添加网络凭据

Add network credentials in Ruby

我对如何将网络凭据添加到 Ruby 中的请求有疑问?

我曾尝试提出请求,但由于没有凭据而被拒绝。目前我有这样的事情:

url = URI.parse("http://dev.azure/tfs/#{collection}/#{proyect}/_apis/git/repositories/#{idrepositori}/pullrequest/#{idPR}?api-version=5.0")
puts "  url #{url}"
req = Net::HTTP::Post.new(url, 'Content-Type' => 'application/json') 
res = Net::HTTP.start(url.hostname, url.port) do |http| 
  http.request(req) 
end

我找到了一个解决方案,使用 ntlm / http 库

这也必须在 gem 文件中导出

ruby "2.6.6"
source "https://rubygems.org"
gem "dependabot-omnibus", "~> 0.118.8"
gem 'ruby-ntlm', '~> 0.0.4'

ruby代码可以与ntlm_auth函数一起工作

require 'uri'
require 'net/http'
require 'json'
require 'ntlm/http'
    
url = URI.parse("http://dev.azure/tfs/#{collection}/#{proyect}/_apis/git/repositories/#{idrepositori}/pullrequest/#{idPR}?api-version=5.0")
    puts "  url #{url}"
    req = Net::HTTP::Post.new(url, 'Content-Type' => 'application/json') 
    req.ntlm_auth('User','Domain', 'Password')
    req.body = {"status": "completed","lastMergeSourceCommit": {"commitId": "123"},"completionOptions":{"deleteSourceBranch":"true"}}.to_json                
    res = Net::HTTP.start(url.hostname, url.port) do |http| 
      http.request(req) 
    end