2009-11-29 4 views
4

Прежде всего, я никогда не использовал API ранее, и я никогда не использовал HTTP-библиотеку в Haskell. Я не уверен, что я делаю неправильно здесь, поэтому, возможно, кто-то, кто знает, может помочь.Использование API Github Gist от Haskell

Я использую то, что я могу читать этого: 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 Gist, и я могу только предположить, что я не переводя Ruby правильно. Как я уже сказал, я никогда раньше не использовал библиотеку HTTP.

Любая помощь приветствуется.

+0

Не могли бы вы объяснить, какой результат вы ожидали вместо этого (или какой результат вам понравился бы)? – Stephan202

+0

Это не делает ничего, насколько я могу судить. Поле местоположения (насколько я знаю) должно быть ссылкой на новый Gist, однако Gist не создается. Я совершенно сбит с толку. Кажется, это должно быть легко. : \ – Rayne

+0

Угадай, я ввернута. : \ – Rayne

ответ

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 
0

Вашего POST URL неправильно, в зависимости от источника должен быть http://gist.github.com/gistssource

+0

Это был несчастный случай с моей стороны. Я экспериментировал и забыл удалить это. – Rayne