代码之家  ›  专栏  ›  技术社区  ›  Rayne

使用Haskell中的Github Gist API

  •  4
  • Rayne  · 技术社区  · 14 年前

    首先,我以前从未真正使用过API,也从未在Haskell中使用过HTTP库。我不知道我在这里做错了什么,所以可能有人知道可以帮忙。

    我用的是我能读到的: 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 API的文档,我只能假设我没有正确地翻译Ruby。就像我说的,我以前从未真正使用过HTTP库。

    感谢您的帮助。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Rayne    14 年前

    在阅读了使用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
    
        2
  •  0
  •   edbond    14 年前

    你的文章网址是错误的,根据来源应该是 http://gist.github.com/gists source