如何在Haskell中上传Google Docs文档?

时间:2012-03-23 21:44:51

标签: haskell google-docs-api

我想在Haskell中创建一个Google Docs文档,所以基本上我想在Haskell中做这个小C#程序的功能(改编自Google示例程序):

using Google.GData.Documents;
using Google.GData.Client;

namespace DocListUploader
{
    public class GDocConsole
    {
        static void Main()
        {
            var user = "...";
            var passwd = "...";
            var file = "...";

            service = new DocumentsService("DocListUploader");
            service.setUserCredentials(user, passwd);
            service.UploadDocument(file, null);
        }
    }
}

来自Google文档API说明here  这个SO回答here我理解它“仅”是发送几个HTTP POST并完成OAuth身份验证的问题,但是如何?有没有人已经完成它并为我提供了一些代码示例......?

编辑:仍然无法弄清楚如何使用oauth库,所以我只写了一个小的C#包装器:

using Google.GData.Documents;
using Google.GData.Client;

public class GoogleDoc
{
    public static int Upload(string user, string passwd, string file)
    {
        try
        {
            var service = new DocumentsService("DocListUploader");
            service.setUserCredentials(user, passwd);
            service.UploadDocument(file, null);

            return 0;
        }
        catch
        {
            return -1;
        }
    }
}

并通过hs-dotnet从

module Upload where

import NET

upload :: String -> String -> String -> IO (Int)
upload user passed file = 
   invokeStatic "[GoogleDoc.dll]GoogleDoc" "Upload" (user, passed, file)

testLocal :: IO ()
testLocal = do
  let user = "..."
  let passwd = "..."
  let file = "..."
  returnCode <- upload user passwd file
  putStrLn (show returnCode)

1 个答案:

答案 0 :(得分:4)

您可以使用haskell-oauth库来执行oauth并上传文档,如上所述,您可以尝试Haskell中的http包。