gpt4 book ai didi

ruby - 如何使用 -X GET -G 选项将 curl 转换为 Ruby Net::HTTP?

转载 作者:可可西里 更新时间:2023-11-01 16:36:28 25 4
gpt4 key购买 nike

我正在使用 https://jhawthorn.github.io/curl-to-ruby/将 curl 命令转换为 Net::HTTP 代码。但是,无法使用 jhawthorn 资源转换以下内容:

curl -H "Content-type: application/json" -H "Authorization: Token token=$PAGERDUTY_ACCESS_KEY" -X GET -G --data-urlencode "since=2017-01-16" --data-urlencode "until=2017-01-17"  "https://company.pagerduty.com/api/v1/schedules" 

我已经在这个 github 问题中描述了我的确切问题:https://github.com/jhawthorn/curl-to-ruby/issues/8

这是我当前使用 Net::HTTP gem 的函数:

#!/usr/bin/env ruby

require 'json'
require 'net/http'
require 'uri'

def get_pagerduty_hash(ending='')
uri = URI.parse("https://company.pagerduty.com/api/v1/schedules#{ending}")
request = Net::HTTP::Get.new(uri)
request.content_type = "application/json"
request["Authorization"] = "Token token=#{ENV['PAGERDUTY_ACCESS_KEY']}"

req_options = {
use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end

return JSON.parse(response.body).to_hash

end

如何更改它以正确使用原始 curl 命令的日期部分:

-X GET -G --data-urlencode "since=2017-01-16" --data-urlencode "until=2017-01-17"

最佳答案

你必须使用 URI.encode_www_form 函数:

#!/usr/bin/env ruby

require 'json'
require 'net/http'
require 'uri'

def get_pagerduty_hash(ending='')
uri = URI.parse("https://company.pagerduty.com/api/v1/schedules#{ending}")
params = { :since => '2017-01-16', :until => '2017-01-17' }
uri.query = URI.encode_www_form(params)
request = Net::HTTP::Get.new(uri)
request.content_type = "application/json"
request["Authorization"] = "Token token=#{ENV['PAGERDUTY_ACCESS_KEY']}"

req_options = {
use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end

return JSON.parse(response.body).to_hash

end

关于ruby - 如何使用 -X GET -G 选项将 curl 转换为 Ruby Net::HTTP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com