まず第一に、私はこれまで API を実際に使用したことがなく、Haskell で HTTP ライブラリを使用したこともありません。ここで何が間違っているのかわからないので、知っている人が助けてくれるかもしれません。
私はこれを読むことができるものを使用しています: http://github.com/defunkt/gist/blob/master/gist.rb、つまり write メソッドを使用して、これを記述します:
req = postRequest "http://gist.github.com/gists/new"
testPost = simpleHTTP $ req {rqBody = urlEncodeVars
[("login", "Raynes"),
("token","<removed>"),
("file_ext[gistfile1]",".hs"),
("file_name[gistfile1]","testfile"),
("file_contents[gistfile1]","main = putStrLn \"Hello, world!\"")]}
testPost を実行すると、次の出力が得られます。
Right HTTP/1.1 302 Found
Server: nginx/0.7.61
Date: Sun, 29 Nov 2009 17:13:51 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Status: 302 Found
Location: http://gist.github.com/gists/new
X-Runtime: 1ms
Content-Length: 98
Set-Cookie: _github_ses=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA%3D%3D--884981fc5aa85daf318eeff084d98e2cff92578f; path=/; expires=Wed, 01 Jan 2020 08:00:00 GMT; HttpOnly
Cache-Control: no-cache
私の知る限り、 Location は新しい Gist へのリンクである必要があります。ただし、新しい Gist は作成されません。何が間違っているのかわかりません。基本的に Gist API のドキュメントはありません。私が推測できる唯一のことは、Ruby を正しく翻訳していないということです。私が言ったように、私はこれまで HTTP ライブラリを実際に使用したことがありません。
どんな助けでも大歓迎です。