0

ASANA タスクの csv への適切なエクスポートを作成する短い Ruby スクリプトを作成しましたが、各プロジェクト内のすべてのタスクに対して GET を実行する必要があるため、実行に時間がかかります。opt_expand を使用して各プロジェクトのすべてのタスク データを一度に取得する方法を見つけました。ただし、curl で機能する opt_expand コードは Ruby では機能せず、expand コマンドを無視するだけです。

どんな助けでも大歓迎です、

通常のカール コード [snippet1]:

curl -u <token>: https://app.asana.com/api/1.0/projects/<project_id>/tasks

作業中の opt_expand curl コード [snippet2]:

curl -u <token>: https://app.asana.com/api/1.0/projects/<project_id>/tasks?opt_expand=.

通常の Ruby コード [snippet3]:

uri = URI.parse("https://app.asana.com/api/1.0/projects/<project_id>")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
...

opt_expand を使用しているにもかかわらず、スニペット 3 と同じ結果を返す壊れた Ruby コード

uri = URI.parse"(https://app.asana.com/api/1.0/projects/<project_id>/tasks?opt_expand=.
")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
...
4

2 に答える 2

0

表示されるエラー メッセージ (またはサーバーからの返信メッセージ) を見ずに答えるのは少し難しいです。

ただし、Net::HTTP は低レベルであり、このような単純なタスクに使用するには少しやり過ぎかもしれないことに注意してください。作業しやすい他のライブラリ (つまり、rest-clientまたは Faraday) を使用することを検討しましたか。例えば:

require 'rest_client'

response = RestClient.get "https://app.asana.com/api/1.0/projects/<project_id>"
if response.code == 200
  # process answer
end
于 2012-06-20T11:48:47.323 に答える
0

グレッグが言ったように、パラメータをサーバーに渡していません。Ruby URI 解析はパラメーターを取りません。次のようなことを試してください:

params = { :opt_expand => 'your opt here' }
uri = URI.parse("https://app.asana.com/api/1.0/projects/<project_id>/tasks")
http = Net::HTTP.new(uri.host, uri.port)
...
uri_with_params = "#{uri.path}?".concat(params.collect { |k,v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')) if not params.nil?
req = Net::HTTP::Get.new(uri_with_params, header)
req.basic_auth(key, password)
res = http.start { |http| http.request(req) }
于 2012-06-23T05:39:36.503 に答える