2009-11-29 41 views
4

首先,我從未真正使用過API,並且我從未在Haskell中使用HTTP庫。我不確定我在這裏做錯了什麼,所以也許有人知道會有幫助。使用來自Haskell的Github Gist API

我使用的是什麼,我可以讀這個:http://github.com/defunkt/gist/blob/master/gist.rb,即寫入方法,寫這篇文章:

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 

據據我所知,該地點應該是新Gist的鏈接。但是,沒有新的要點。我不確定我做錯了什麼。基本上沒有Gist API的文檔,我唯一可以假設的是我沒有正確地翻譯Ruby。就像我說的,我從來沒有真正使用過HTTP庫。

任何幫助表示讚賞。

+0

你能否解釋一下你期望的輸出(或者你會喜歡哪個輸出)? – Stephan202 2009-11-29 17:23:42

+0

據我所知,它根本沒有做任何事情。位置字段(據我所知)應該是新Gist的鏈接,但是,沒有Gist。我感到非常困惑。這似乎應該很容易。 :\ – Rayne 2009-11-29 17:29:15

+0

猜猜我搞砸了。 :\ – Rayne 2009-11-29 18:39:01

回答

1

我想通了自己閱讀使用Network.Browser.browse的例子之後。

req = "http://gist.github.com/gists" 

testPost = do 
    (uri, rsp) <- Network.Browser.browse $ do 
        setAllowRedirects True 
        request $ formToRequest $ 
          Form POST (fromJust $ parseURI req) 
            [("file_ext[gistfile1]",".hs"), 
            ("file_contents[gistfile1]","main = putStrLn \"Hello, world!\""), 
            ("login","Raynes"), 
            ("token","removed")] 
    return uri